使用不同的publicKeyToken升级参考.Net dll

时间:2012-11-13 11:38:59

标签: c# .net configuration .net-assembly

我必须在我的项目中使用一些dll文件,这些文件引用了程序集XXXXX。我现在在我的项目中有这个程序集的更新版本,但是当我运行我的项目时,我收到错误:Could not load file or assembly XXXXX, Version=XXXXX。我尝试使用MSDN article Redirecting Assembly Versions解决此问题。但它没有帮助。似乎重定向程序集不起作用,因为我有不同的公共令牌密钥。旧装配中null。但它在较新的装配中有一些值“xxxxxxxxxxx”。如何解决这个问题?

P.S。类似的问题是here。但不同之处在于我有不同的公共令牌密钥。

2 个答案:

答案 0 :(得分:0)

您需要获取针对新版XXXXX构建的新版dll文件。

您可以在http://msdn.microsoft.com/en-us/library/yx7xezcf.aspx中了解有关装配体查找的更多信息。

答案 1 :(得分:0)

共享dll中的公钥应该可以保护应用免受“中间人/中间人”攻击。

当当前的sub.dll与编译main.exe时没有相同的公钥时,dot net运行时正确拒绝使用sub.dll启动main.exe。

解决这个问题你可以

  • 使用新的sub.dll
  • 重新编译main.exe
  • 确保两个版本的sub.dll都使用相同的公钥进行编译。在您的情况下,您可以从sub.dll中删除公钥(即使用ilmerge),因为旧的sub.dll没有密钥。