2011-04-01 55 views
8

我正在从一个项目引用其他产品的dll。该产品每年都有一个版本,并且每个版本都会更改程序集版本,尽管方法保持不变。 当我尝试运行2009年的项目时,我运行2010版项目,它会引发错误,因为它依赖于不同的版本。有没有解决的办法?如何让C#项目忽略程序集的版本号?

回答

8

尝试选择引用,并在属性窗口中将特定版本设置为false。

+1

显然这只影响编译时的程序集引用。 – 2012-03-07 01:36:47

7

如果你换你的装配的版本后,指的是在问题运行没有执行重建程序引用您的新建装配的,你需要使用一个<bindingRedirect>指令程序的App的.config(或Web.config文件,如果你在谈论一个网站。)

bindingRedirect用于指示.NET框架,它是确定使用组件的版本,其他不是一个应用原本是反对的。默认情况下,CLR希望看到应用程序在构建期间引用的DLL的版本相同,如果不是,则会引发异常。

1

它可以装配不同的.NET版本的app.config地图,你把应用程序的根文件夹

<?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> 

这是装配时已参考答案已到另一个specifc里面引用库版本。

它发生在编译时“特定版本”设置为true。为了避免这个问题,它应该是错误的。 enter image description here

相关问题