如何使c#项目忽略程序集的版本号?

时间:2011-04-01 13:23:33

标签: c# assemblies

我正在开发一个引用其他产品的dll的项目。该产品每年都有一个版本,每个版本的版本都会发生变化,但方法保持不变。 当我为2010年运行我的项目构建时,当我尝试在2009年运行它时,它会抛出一个错误,因为它依赖于不同的版本。有办法解决这个问题吗?

3 个答案:

答案 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。为了避免这个问题,它应该是假的。 enter image description here