我有一个使用Oracle客户端(特别是Oracle.DataAccess)的小型命令行应用程序。我的开发计算机上安装了2.11.7.20版本,但应用程序最终将运行的服务器版本为2.11.7.0。当我尝试在服务器上运行应用程序时,它失败,说明它无法找到dll或它的一个依赖项(找到的程序集清单定义与程序集引用不匹配)。Oracle客户端版本的小变化导致应用程序失败
我将Oracle.DataAccess.dll从服务器复制到我的机器上,改为将项目改为引用它,然后重新编译。它现在在服务器上正常运行。
但是,必须有一种更简洁的方法来处理这类版本问题,尤其是像x.x.x.0到x.x.x.20这样小的版本。我一直在ASP.NET中进行开发多年,您可以在web.config中更改对程序集的引用以解决类似的问题,但这是我的第一个“桌面”应用程序,不知道该怎么做。我试图在Visual Studio的属性中为引用程序集设置“特定版本”为false,但它似乎没有做任何事情。我也尝试添加一个assemblyBinding到app.config文件,但是这导致应用程序立即崩溃。
<runtime>
<assemblyBinding>
<dependentAssembly>
<assemblyIdentity name="Oracle.DataAccess"
publicKeyToken="89b483f429c47342" />
<bindingRedirect oldVersion="2.111.7.20"
newVersion="2.111.7.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
编辑:哦,我把运行时间段作为app.config而不是configSections的第一个块。该应用程序不再崩溃,但我仍然得到相同的错误。
“我也尝试在app.config文件中添加一个assemblyBinding,但这导致应用程序立即崩溃。” – 2010-09-21 15:28:22