1

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

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

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

我只能构建我们的 Windows 窗体应用程序以使用 3rd 方工具的 v1.0 或 v2.0。为此,我必须在构建之前在我的开发 PC 上安装任一版本。这显然是一种不好的方法,因为我每次都必须卸载/重新安装第 3 方工具。如果我在我的 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,没有安装程序。

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

谢谢

4

1 回答 1

1

您可以始终针对 1.0.0 3rd 程序集进行构建,然后执行绑定重定向(在您的应用程序配置中)以使用 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 帖子还描述了设置绑定重定向时的一个常见问题:程序集绑定重定向不起作用

于 2012-10-29T09:52:46.643 回答