2009-08-05 188 views
1

我已经构建了一个控制台应用程序,该应用程序引用了我们构建的另一个dll的版本4.3.2.1。控制台应用程序引用的C#版本控制

它工作正常,并完成其工作。

然后建立dll的4.3.2.2版本,并且控制台应用程序开始死亡,因为它想要查看4.3.2.1。

有什么办法可以告诉控制台应用程序使用4.3.2.1或更高版本吗? 4.3.2.1中的方法也存在于4.3.2.2中,并且将包含在所有后续版本的dll中。

回答

4

使用的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应该没问题。

+0

谢谢,我会试试看。我宁愿不必重新编译实用程序,所以这种方法听起来像是完美的。 – 2009-08-05 15:11:44

3

当您将引用选择到另一个DLL时拉起属性窗口。确保“特定版本”属性设置为false。

+0

没关系,如果你可以重建应用程序,但是你也可以使用app.config。我相信“使用特定版本”只是修改编译时引用的版本。 – 2009-08-05 14:20:17

0

如果dll名称更改。例如。 foo-4.3.2.1.dll,foo-4.3.2.2.dll唯一的解决方法是在运行时加载程序集。

如果程序集名称永远不会更改,那么可能为您引用的程序集启用了“特定版本”。禁用它应该可以解决问题。