2

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

PS 类似的问题在这里。但不同之处在于我有不同的公共令牌密钥。

4

2 回答 2

0

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

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

于 2012-11-13T11:44:03.527 回答
0

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

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

要解决这个问题,你可以

  • 用新的 sub.dll 重新编译 main.exe
  • 确保 sub.dll 的两个版本都使用相同的公钥编译。在您的情况下,您可以从 sub.dll 中删除公钥(即使用ilmerge),因为旧的 sub.dll 没有密钥。
于 2012-11-13T11:53:58.453 回答