我已经构建了一个控制台应用程序,它引用了我们构建的另一个DLL的版本4.3.2.1。
它运作良好并完成了它的工作。
然后构建了dll的4.3.2.2版本,并且控制台应用程序开始死亡,因为它想看4.3.2.1。
有没有办法告诉控制台应用程序使用4.3.2.1或更高版本? 4.3.2.1中存在的方法也存在于4.3.2.2中,并且将在所有后续版本的dll中。
答案 0 :(得分:5)
使用app.config的<assemblyBinding>
元素:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Foo.dll"
publicKeyToken="1234567890abcdef"
culture="neutral" />
<bindingRedirect oldVersion="4.3.2.1"
newVersion="4.3.2.2"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
有关详细信息,另请参阅"Redirecting Assembly Versions"。
这假设您不想重新编译应用程序,当然 - 如果您不介意重新编译,那么只需将“使用特定版本”设置为false就可以了。
答案 1 :(得分:3)
当您将引用选择到其他DLL时,请拉出属性窗口。确保“特定版本”属性设置为false。
答案 2 :(得分:0)
如果dll名称发生变化。例如。 foo-4.3.2.1.dll,foo-4.3.2.2.dll唯一的解决方法是在运行时加载程序集。
如果程序集名称永远不会更改,则可能是为引用的程序集启用了“特定版本”。禁用它应该可以解决问题。