2

我丢失了一个非常重要的 .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. 此代码是否与原始代码完全相同,没有替代解决方案或类似的东西?
4

3 回答 3

1

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

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

于 2013-02-11T16:11:21.880 回答
1

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

于 2013-03-05T08:50:37.037 回答
0

我最近不得不从程序集中恢复代码。我使用了 JetBrains 的 dotPeek。它完成了这项工作。你可以试试这个,而不是 Reflector。

至于您的问题:您遵循的说明是从 2008 年开始的(!)。当时的最新版本是 3.0/3.5,与 2.0 兼容。.NET 4.0 于 2010 年发布。也许 Reflector 不会将版本设置为无法验证的版本。

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

于 2013-02-11T16:20:45.723 回答