使用.Net Reflector或其他工具确定exe的原始构建位置/路径

4

我有一个EXE文件,目前部署在我们的生产服务器上(c# .net 2)。 我接手了对这个应用程序进行一些更改并重新部署的任务。

我没有编写过这个应用程序,并且我被指向了各种不同的网络驱动器上的几个不同的Visual Studio解决方案(约10个),这些解决方案是通过时间变化而形成的这个应用程序的各种咒语版本,并且可能是用于生成此exe的Visual Studio项目的候选项,但我不知道哪个项目与生产EXE相匹配。

是否可以使用.NET反编译器或其他工具确定源文件编译为EXE时的原始文件路径,然后我就可以倒推出正确的Visual Studio解决方案并开始进行更改了。

谢谢


1
哇!立即将您的项目纳入源代码控制! - jason
这是我在合同职位中继承的情况,超出了我的控制范围。因此,我必须尽力处理我所处的情况。是的,我正在将所有可以的东西整合到源代码控制中。 - m3ntat
2个回答

7

如果你无法了解正在生产中运行的内容的起源,那听起来像是一个非常棘手的情况。

然而,可能有一种解决方案是查看.exe程序集的调试标头,如果它已经编译了调试符号,它可能包含pdb的原始完整路径,从而给你建议它在哪里构建。你可以使用Windows SDK中的dumpbin工具获取它。

这是输出的一个例子:

  Debug Directories

        Time Type       Size      RVA  Pointer
    -------- ------ -------- -------- --------
    4A0F2A94 cv           51 0006672C    6492C    Format: RSDS, {77468AA8-8494-46AC-87DF-422721517504}, 8, C:\sources\mcs\class\Mono.Cecil\obj\Debug\Mono.Cecil.pdb

更好的是,如果您有pdb可用,您可以使用类似pdbdump的工具来知道哪些文件被用于编译汇编程序。

太棒了,非常好的技巧啊! dumpbin 奏效了 :-) 非常感谢您。 - m3ntat

0

你最好的选择可能是使用Reflector和http://www.codeplex.com/reflectoraddins中的一个文件生成插件将代码转储到文件中。但在进行任何更改之前,请确保您可以重新构建。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接