1

在我的应用程序中,我引用了一个在本地运行良好的 .dll。在我构建应用程序以进行发布并在另一台计算机上对其进行测试后,库无法加载。我已将进程附加到测试计算机上的 Visual Studio 调试器,我收到的错误消息告诉我,无法验证强名称。

要在另一台计算机上进行测试,我只需构建发布解决方案并将整个发布文件夹复制到另一台计算机。所有的.dll,包括失败的,都在那里,除了一个,所有的都被成功加载。当我做同样的事情但使用该 .dll 的代码被注释掉时,一切正常。

有没有我遗漏的步骤?图书馆的强名称可以在本地但在测试计算机上进行验证,这似乎很奇怪。

4

1 回答 1

0

根据您的症状,听起来您可能为该程序集启用了延迟登录?请注意以下部分:

使用 –Vr 或 –Vk 选项,您可以选择包含用于测试密钥签名的 .snk 文件。

仅在开发期间使用 -Vr 或 -Vk 选项。将程序集添加到跳过验证列表会产生安全漏洞。恶意程序集可以使用添加到跳过验证列表中的程序集的完全指定的程序集名称(程序集名称、版本、文化和公钥令牌)来伪造其身份。这将允许恶意程序集也跳过验证。

您可能已经运行了它,因此它在您的机器上传递,而不是在部署机器上传递。

http://msdn.microsoft.com/en-us/library/t07a3dye(v=vs.110).aspx

于 2014-07-01T13:53:47.397 回答