我有两个程序集。一个程序集是指另一个程序集。我检查了第一个程序集的 list ,发现它使用一些特定的 token key 引用了第二个程序集。
但是我检查了第二次组装的 token ,发现它有一个不同的公共(public) token 。所以不知何故我错过了正确的第二次组装。所以我想知道有没有办法可以将第二个程序集的公共(public) token 更改为第一个程序集需要的 token 。
此外,我还有另一个具有公共(public) token = null 的程序集。
最佳答案
听起来您想重建第二个程序集并使用不同的 key 对其进行签名,如果您有源代码会很容易,所以我猜您没有?
我认为重建第一个程序集会更容易,以便它使用第二个程序集上存在的公钥 token 引用您拥有的第二个程序集。更容易,但并不完全简单。
我认为您应该能够通过 ildasm.exe
运行第一个程序集来实现它。 ,更改对第二个程序集的引用上的公钥标记,然后通过 ilasm.exe
运行结果,生成第一个程序集的新版本。
所涉及步骤的粗略概述......
ildasm.exe /out=first.il first.dll
(或 first.exe
)first.il
并找到 .装配 用于引用 second.dll
的外部 block ilasm.exe first.il
生产first.dll
(或 first.exe
)请注意,我已经很长时间没有使用这些工具了,也从未以这种方式操作公钥 token ,因此您可能需要添加一些自己的独创性。但另一方面,我想不出这种方法不起作用的原因。
关于.net - 如何更改程序集的公共(public) token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3889124/