.net - 如何更改程序集的公共(public) token

标签 .net dll assemblies

我有两个程序集。一个程序集是指另一个程序集。我检查了第一个程序集的 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
  • 更改该 block 中的公钥 token
  • 运行ilasm.exe first.il生产first.dll (或 first.exe )

  • 请注意,我已经很长时间没有使用这些工具了,也从未以这种方式操作公钥 token ,因此您可能需要添加一些自己的独创性。但另一方面,我想不出这种方法不起作用的原因。

    关于.net - 如何更改程序集的公共(public) token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3889124/

    相关文章:

    c# - 如何实现简单的字符串搜索

    c# - ODP.NET 托管 - 无法找到请求的 .Net Framework 数据提供程序

    c++ - 单例 : C++ shared dll

    c# - 我可以在不知道 dll 文件名的情况下加载程序集吗,我只知道命名空间名称

    c# - .NET 交叉程序集性能下降

    c# - 是否可以在仅使用 .NET 或其他一些内置 Windows API 维护层次结构的同时解压缩 zip 文件?

    c# - 在方法中更改结构

    c++ - 在函数中添加参数时重建动态库

    java - 在我的 jar 中将要访问的 .dll 放在哪里

    visual-studio-2008 - Visual Studio 构建时间