【问题标题】:How to enable .NET Reflector to pick the right version of .NET compiled assembly?如何启用 .NET Reflector 选择正确版本的 .NET 编译程序集?
【发布时间】:2012-11-02 11:43:21
【问题描述】:

我有一个关于 .NET 反射器的简单问题。我已经从 .NET Reflector 手动反编译了程序集,导出了它的代码并从 Visual Studio 手动重新编译了它的代码并生成了它的程序集(我想要很少的代码更改)。现在我希望这个程序集被另一个反编译了其他程序集的主项目正确引用。但问题是,它抛出了一个异常

“无法选择程序集 xxxx VERSION = 1.0.12.4”

这就是问题所在。它会以某种方式选择旧版本,而不是选择正确的版本(我在其中进行了更改,甚至引用了该项目,并且它现在的版本为“0.0.0.0”)。基本上在更改代码之前,它会自行反编译并生成缓存,将所有源文件放在其中。但现在我想更改一些代码并单独编译整个项目代码,然后在其他程序集可能较旧的主项目中引用该项目。

编辑

手动我在 Assembly.cs 文件中看不到任何可以更改项目中引用的程序集版本的地方。我的问题是我想让 Visual Studio 加载它作为项目引用的程序集版本。程序集编译并放在同一个“调试”目录中。但是当 EXE 启动时它会抛出异常。 因为它在某个地方看到了具有以前工作的旧版本的程序集。

问候 乌斯曼

【问题讨论】:

  • 你控制主项目吗?

标签: c# .net reflection reflector


【解决方案1】:

AssembleVersion 属性添加到您的反编译程序集

[assembly: AssemblyVersion("1.0.12.4")]

另一个选项是更改其他程序集中的引用 - 您可以使用 Reflexil Reflector 插件来完成。

【讨论】:

  • 我仍然无法解决这个问题。请查看修改。
【解决方案2】:

我自己发现了问题。

我也手动重新编译了那个项目,它是自引用旧的 xxx 程序集。因为它也引用了在第一阶段错误选择的程序集。

所以,在我的情况下,解决方案是,简而言之,编译所有直接或间接引用旧版本的程序集的程序集(代码)。

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-10
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    相关资源
    最近更新 更多