【发布时间】: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 程序集吗?