我正在开发一个引用其他产品的dll的项目。该产品每年都有一个版本,每个版本的版本都会发生变化,但方法保持不变。 当我为2010年运行我的项目构建时,当我尝试在2009年运行它时,它会抛出一个错误,因为它依赖于不同的版本。有办法解决这个问题吗?
答案 0 :(得分:8)
尝试选择引用,并在属性窗口中将Specific Version设置为false。
答案 1 :(得分:7)
如果您在交换程序集的版本运行时指的是运行,而不执行执行引用新构建的程序集的程序的重建,那么您需要使用<bindingRedirect>
指令到程序的App.config(或Web.config,如果你在谈论一个网站。)
bindingRedirect
用于指示.NET Framework可以使用程序集其他的版本,而不是最初编译应用程序的版本。默认情况下,CLR希望看到应用程序在构建期间引用的DLL的相同版本,如果不是,则会抛出异常。
答案 2 :(得分:1)
可以在应用程序根文件夹中放置的 app.config 中映射不同的.net版本的程序集
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Waters.ACQUITY.Remote"
publicKeyToken="6c13fd0b3604de03"
culture="neutral" />
<bindingRedirect oldVersion="1.40.0.0"
newVersion="1.60.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
当您引用的程序集在其中具有对另一个特定库版本的引用时,这是解决方案。
它发生在编译时#34;特定版本&#34;设置为true。为了避免这个问题,它应该是假的。