我有.net dll,它使用不同的.net dll,PublicToken设置为null。现在我必须使用相同版本的不同dll,但将PublicToken设置为其他值。有没有办法使用它而无需重新编译第一个dll(我没有源代码)。
答案 0 :(得分:1)
我认为没有一种干净的方法可以做到这一点,主要是因为你要做的就是打败强命名概念的目的。 bindingRedirect
仅适用于版本,而不适用于密钥。我能想到的唯一方法是禁用强名称验证:
sn.exe -Vr TheAssembly
您可以详细了解here。
问题在于,它必须在运行的每台机器上完成。
另一种方法是使用像Mono.Cecil这样的工具从模块的程序集引用中剥离公钥标记,这样它就不再关心了。如果它本身很强大,你也必须删除它。此选项通常有效,但在大多数情况下,如果它是商业产品,则会违反任何形式的EULA。