DLL版本不匹配:定位的程序集的清单定义与程序集引用

时间:2018-06-15 09:20:46

标签: c# visual-studio gac visual-studio-2003

我在Visual Studio 2003中有一个遗留项目,是其他开发人员过去制作的。

此项目添加了一些参考。其中一个,让我们说myDLL.dll。它在VS中具有以下属性:

  • 复制Local = True
  • 运行时版本v1.1.4322
  • 强名:真实
  • 类型:程序集
  • 版本:2.1.1.30200

我构建解决方案并将其复制到生产计算机的目标路径中。 在目标中,我确保myDLL.dll与VS解决方案中的版本相同,即2.1.1.30200。

当我在生产机器中执行新版本的应用程序时,错误显示在我的应用程序日志中:

  

找到的程序集的清单定义,名称为' myDLL'才不是   匹配程序集引用。

我想在GAC中加载/安装了此DLL的先前版本,因此出现上述异常。

所以,我想知道GAC是否会不时(定期)自动清理,还是需要手动删除旧的DLL并安装新的DLL?

如果我需要删除旧的并在生产机器中安装新的,我该怎么办?

此外,如果我在生产机器中转到C:\ Windows \ assembly我可以找到DLL myDLL,但指示的版本是2.1.0.0而不是2.1.x.x.为什么?不应该是2.1.1.30200(对于新的)或2.1.1.20100(对于旧的)?

我在这里阅读了很多帖子,如下所示:

我找到的其他有趣的链接:

但我在GAC非常新手。

1 个答案:

答案 0 :(得分:0)

您是否尝试将myDLL.dll放入输出程序所在的同一目录中?对于网络项目,它是" bin"目录,对于EXE,只需将它们放在同一个文件夹中即可。因此它将从应用程序目录加载,而不是从GAC加载。