从exe文件获取解决方案

时间:2013-02-11 16:07:27

标签: c# .net reflection

我丢失了一个重要的.NET 4.0 C#项目,我剩下的就是exe文件。

为了恢复项目,我尝试了这个:http://mrdublin.net/2008/07/31/retrieve-c-code-out-of-exe-assembly/

当前的.NET Reflector看起来并不一样,但我尽可能地遵循指南,我确实得到了一个项目。在Visual Studio 2010中打开它时,我首先必须将项目转换为当前版本和构建。

问题是:

  1. 我不得不将.NET从2.0更改为4.0(从一开始就是这样),为什么反射器将它设置为2.0?
  2. 这段代码是否与原始代码完全相同,没有替代解决方案或类似的东西?

3 个答案:

答案 0 :(得分:1)

我不再熟悉Reflector,但我想它只是默认为.net 2.0,可能有一个选项可以在某处更改。作为替代方案,您可以查看JetBrains dotPeek

关于问题2:不,代码可能看起来像原始源一样(除非你有PDB文件)。您将丢失所有注释,变量名称等。所有反编译的源都将非常通用,因为编译的代码不包含此类详细信息。

答案 1 :(得分:0)

我最近不得不从程序集中恢复代码。我用了dotPeek from JetBrains。它完成了这项工作。你可能会尝试而不是反射器。

至于你的问题:你所遵循的指示来自2008年(!)。目前的版本是3.0 / 3.5,与2.0兼容。 .NET 4.0于2010年发布。也许Reflector不会将版本设置为无法验证的版本。

第二个更直接:我不确定你的“替代解决方案”是什么意思,但是你会将exe的IL翻译成c#。这意味着恢复的代码将与原始代码不同。另一方面,你没有原版,那么你将如何验证?我们的变量名称会有所不同,你会丢失注释,测试以及exe外部的所有其他内容。看看你是否还有可执行文件的PDB文件,这将有助于变量名称和实际的,编写的C#代码。

答案 2 :(得分:0)

我使用了常规的reflector.net,即使它没有重新生成exect代码,也没有更好。