2009-10-28 61 views
1

问题

的基本问题是我想调试一些第三方代码来看看它是如何工作的,所以我可以取代它的一部分。重定向程序集绑定到一个自定义/无符号的DLL

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


详细

有问题的具体项目是asp.net的MVC,其原因是在GAC中的dll的副本进行了优化,并且不与微软的源代码正确地匹配起来服务器。

微软已经发布了asp.net mvc的源码,所以我可以下载它并自己编译dll,但显然我无法用他们的密钥签名dll,我可以用我自己的密钥签名,但它会有一个不同的公钥令牌。

简单的答案是在我的应用程序中引用我的dll并重新编译我的应用程序,但是接下来我还必须重新编译每隔一个引用asp.net mvc的其他第三方dll(例如,mvccontrib)。

+0

你最终得到了一个工作解决方案吗?我有这个确切的问题。我很确定有关于使用MVC dll的非GAC版本的指导(ScottGu的博客?),所以似乎所有难题都在那里... – notJim 2011-04-04 20:00:46

回答

0

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

sn -Vr assembly 

注销从GAC原厂组装,然后把自己的程序的文件夹,并使用SN跳过验证。

+0

有没有办法避免删除它来自GAC,因为它是msi安装程序引用的,所以gacutil拒绝将其删除,我通常喜欢避免暴力破解并随后破坏随机事件。 – 2009-10-28 11:59:18

0

我有一个类似的问题,'修补'系统延迟签署dlls/exes。尽管使用sn -Vr *,[PublicKey],但SecurityException失败:强名称验证失败。然后,看看注册表位置:HKLM\Software\Microsoft\StrongName\VerificationHKLM\Software\Wow6432Node\Microsoft\StrongName\Verification它看起来有一些无效的条目。我删除了无效的条目,然后再次使用sn(对于64/32位),它的工作方式就像一个魅力。