【问题标题】:.Net dll reference - deployment onto PCs with different versions of 3rd party dll.Net dll 参考 - 使用不同版本的 3rd 方 dll 部署到 PC
【发布时间】:2012-10-18 14:03:58
【问题描述】:

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

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

安装在人们PC上的部署环境中,有两个不同版本的第3方工具——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,没有安装程序。

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

谢谢

【问题讨论】:

  • 完全不清楚为什么必须卸载其中一个版本。 GAC 的重点是您不必这样做。所以不要。将引用程序集保存在单独的文件夹中,切勿在项目中直接引用 GAC。一个危险信号:这真的是一个 .NET 1.x 程序集吗?

标签: .net c#-2.0 gac


【解决方案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

【讨论】:

    猜你喜欢
    • 2019-02-26
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    相关资源
    最近更新 更多