【问题标题】:Replace assembly with different version用不同的版本替换程序集
【发布时间】:2013-08-22 11:01:55
【问题描述】:

我的程序已编译为特定于程序集的版本,可以在使用 ilspy as 的参考资料中找到该版本

 Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

我找不到这个版本的程序集。我丢失了文件。相反,我有

的版本
PublicKeyToken=null.

我发现可以手动将程序集安装到 GAC 中,使用公钥命名目录。

但是用起来不切实际。

我遇到了sn.exe -Vr switch,它应该关闭版本验证。

它是这样工作的吗?有人试过吗?

【问题讨论】:

  • 你的程序是用.net开发的吗?然后必须是一个 AssemblyInfo.cs 文件。在那里你可以看到组装版本。
  • 没关系。我只是丢失了原始 DLL,并且有一些没有 PK 令牌。但是系统需要我没有正确的 PK 令牌。

标签: .net clr .net-assembly gac


【解决方案1】:

GAC 需要对程序集进行签名,因此需要一个公钥。即使它有效,尝试破解它听起来也不是一个好主意。你不能用以前使用的密钥签名吗?还是重新编译你的程序?

【讨论】:

    【解决方案2】:

    如果它不是一个过于复杂的系统,我会反汇编需要您没有的签名/gac'd dll 的 exe,并将 IL 中的引用修复为不是您拥有的那个。将 IL 重新组装到 exe 中。

    Mike Stall 的博客很擅长解释其中的大部分内容:Debugabbility with Roundtripping Assemblies

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-18
      • 1970-01-01
      • 1970-01-01
      • 2010-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多