1

问题

基本问题是我想调试一些第 3 方代码以查看它是如何工作的,以便我可以替换它的一部分。

无论如何要重定向绑定,以便它不会使用 GAC 中的 dll,而是使用我编译的副本(这将是未签名的或具有不同的公钥)。


细节

问题的具体项目是asp.net mvc,原因是gac中的dll副本已经优化,与微软源服务器中的源代码不匹配。

Microsoft 已经发布了 asp.net mvc 的源代码,所以我可以下载它并自己编译 dll,但显然我不能用他们的密钥签署 dll,我可以用我自己的密钥签署它,但它会有不同的公钥令牌.

简单的答案是在我的应用程序中引用我的 dll 并重新编译我的应用程序,但是我还必须重新编译所有其他引用 asp.net mvc(例如,mvccontrib)的第 3 方 dll。

4

2 回答 2

0

您可以使用SN.EXE 工具调整签名验证。

sn -Vr assembly

从 GAC 中注销原始程序集,然后将您自己的程序集放入程序文件夹并使用 SN 跳过验证。

于 2009-10-28T11:05:28.380 回答
0

我有类似的问题来“修补”带有延迟签名的 dll/exe 的系统。尽管使用sn -Vr *,[PublicKey]它失败了 SecurityException: Strong name validation failed。HKLM\Software\Microsoft\StrongName\Verification然后,查看注册表位置:HKLM\Software\Wow6432Node\Microsoft\StrongName\Verification它似乎有一些无效条目。我删除了无效条目,然后再次使用 sn(对于 64/32 位),它就像一个魅力。

于 2013-05-31T13:26:59.543 回答