我丢失了一个非常重要的.NET 4.0 C#项目,剩下的只是exe文件。
为了恢复项目,我尝试了以下操作:http://mrdublin.net/2008/07/31/retrieve-c-code-out-of-exe-assembly/
目前的.NET反射器看起来不一样,但我已经尽我所能遵循了指南,我确实得到了一个项目。在VisualStudio2010中打开它时,我首先必须将项目转换为当前版本和内部版本。
问题是:
- 我不得不把.NET从2.0改为4.0(从一开始就是这样),为什么反射器把它设置为2.0
- 这个代码会和原来的一样吗,没有其他解决方案或类似的东西
我对Reflector不太熟悉了,但我想它只是默认为.net 2.0,可能有一个选项可以在某个地方更改。作为替代方案,您可以查看JetBrains的dotPeek。
关于问题2:不,代码看起来可能与原始源代码完全不同(除非您有PDB文件)。你会丢失所有的注释、变量名等。所有反编译的源代码都是非常通用的,因为编译的代码不包括这样的细节。
我使用了常规的reflector.net,即使它没有重新生成exect代码,也总比什么都没有好。
我最近不得不从程序集中恢复代码。我用了JetBrains的dotPeek。它完成了任务。你可以试试这个,而不是Reflector。
关于您的问题:您遵循的说明来自2008年(!)。当时的版本是3.0/3.5,与2.0兼容。NET 4.0于2010年发布。也许Reflector不会将版本设置为无法验证的版本。
第二个更简单:我不确定你所说的"替代解决方案"是什么意思,但你会把exe的IL翻译回c#。这意味着恢复的代码将与原始代码不同。另一方面,你没有原件,那么你该如何验证呢?Y我们的变量名称将不同,您将丢失注释、测试和exe外部的所有其他内容。看看您是否还有可执行文件的PDB文件,它将有助于变量名和实际的C#代码。