.Net dll参考 - 部署到具有不同版本的第三方DLL的PC上

时间:2012-10-29 09:04:49

标签: .net c#-2.0 gac

您能告诉我这种情况的最佳方法吗?我继承了一个新项目,之前没有遇到过这种情况。

我们在C#Windows窗体应用程序中引用了用于生成文档的第三方工具。

在人们的PC上安装了部署环境中的第三方工具有两个不同版本 - v1.0和v2.0。

我只能构建我们的Windows窗体应用程序以使用第三方工具的v1.0或v2.0。为此,我必须在构建之前在我的开发PC上安装任一版本。这显然是一个糟糕的方法,因为我每次都必须卸载/重新安装第三方工具。如果我在我的电脑上使用错误的版本构建,则用户会收到

Could not load file or assembly 'Interop.IManage, Version=1.0.0.0, Culture=neutral,     
PublicKeyToken=141424aa94e741g5' or one of its dependencies. The located assembly's 
manifest definition does not match the assembly reference.

项目中似乎只有一个对dll的引用,即使用GAC引用。

C:\WINDOWS\assembly\GAC\Interop.iManage\1.0.0.0__141424aa94e741g\third.partyTool.dll

我卸载v1.0并安装v2.0

的更改
C:\WINDOWS\assembly\GAC\Interop.iManage\2.0.0.0__141424aa94e741g\third.partyTool.dll

在部署我们的应用程序方面,我们对文件进行了简单的XCOPY,没有安装程序。

有没有办法可以在我们的应用程序中保存这两个引用,然后在部署后使用正确的引用?或者是否有可用于解决此问题的部署方法?

由于

1 个答案:

答案 0 :(得分:1)

您可以始终针对1.0.0第三方程序集构建,然后执行绑定重定向(在您的应用程序配置中)以使用2.0.0版本(如果可用)。

请参阅此处:http://msdn.microsoft.com/en-us/library/eftw1fys(v=vs.100).aspx了解详情。

此处有更多示例:http://blogs.msdn.com/b/thottams/archive/2007/01/30/introduction-to-versioning-and-bindingredirect.aspx?Redirected=true

SO帖子还描述了设置绑定重定向时的常见问题:Assembly binding redirect does not work