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

时间:2010-02-02 16:20:47

标签: c# .net-reflector

我有一个当前部署在我们的生产服务器上的EXE(c#.net 2)。我继承了对此应用程序进行一些更改并重新部署的任务。

我没有写这个应用程序,我已经指出了各种网络驱动器上的几个不同的文件夹,有几个不同的Visual Studio解决方案(~10),这些应用程序的各种咒语随着时间的推移而成为竞争者用于生成此exe的Visual Studio项目,但我不知道哪个项目与生产中的EXE匹配。

有没有办法使用.net Reflector或其他工具来确定源文件在用于编译EXE时所处的原始文件路径,然后我可以向后工作以确定正确的Visual Studio解决方案并开始在那里进行更改。

由于

2 个答案:

答案 0 :(得分: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这样的工具来知道用于编译程序集的文件。

答案 1 :(得分:0)

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