您是否曾经不得不调试或分析没有源代码或无法生成该文件的可执行文件(.exe文件)? 那么最不为人所知的Visual Studio项目类型EXE项目适合您!
在Visual Studio中,您可以将任何EXE文件作为“项目”打开。 只需转到
文件->打开->项目/解决方案,然后转到
.exe文件 。 好像它是一个
.sln文件。 Visual Studio将作为项目打开此EXE文件。 此功能已经存在很长时间了。 它适用于当前所有受支持的Visual Studio版本,并且其文档位于
应用程序的“
调试”页面上,而该页面
不是Visual Studio解决方案的一部分 。
侦错
与在常规项目中一样,您可以使用F5开始调试,这将启动EXE并启用调试器。 如果要调试启动,则可以开始使用F11,它将启动EXE并在用户代码的第一行停止。 这两个选项都在“
解决方案资源管理器”窗口中的EXE项目的上下文菜单中可用,如下所示:

为了调试,您将需要符号,PDB文件,EXE以及需要调试的所有DLL。 Visual Studio将遵循相同的过程,并尝试以与调试常规项目相同的方式获取字符。 由于PDB文件不太可能与.exe文件一起分发,因此您可能希望在程序集中或者甚至在符号服务器上找到它们。 有关使用符号的更多信息和建议,请参见此
博客 。
为了进行有效的调试,您还需要用于构建EXE的源代码,甚至还需要一些您感兴趣的文件。 您需要找到这些文件并在Visual Studio中打开它们。 如果源代码与已编译的源代码不匹配,则当您尝试插入断点时,Visual Studio EXE会警告您,并且断点将不会被绑定。 可以在“
设置”查看窗口中更改此行为。 在参数视图中,单击链接文本“
必须与源匹配” ,然后选中复选框以解决不适当的源,如下所示。 当然,如果使用不适当的资源,您将永远不会知道会发生什么,因此,使用此方法的风险自负。

如果EXE是使用
SourceLink编译的,则源信息将包含在PDB中,Visual Studio将尝试自动加载源。 这是在项目中使用SourceLink的确实很好的理由。 即使您具有本地集,也可能没有用于构建二进制文件的版本。 SourceLink是确保将正确的源链接到正确的二进制文件的可靠方法。
如果无法获取源代码,您仍然可以选择以下几种方法:
- 使用该工具将程序集反编译回C#,您可以将其重新编译为新程序集以修复旧程序集。
- ILSpy是一个不错的选择,但是还有许多其他付费和免费工具。
- 使用Visual Studio中的反汇编工具窗口。
- “ 找不到源文件”文档包含查看反汇编的链接。 请记住,如果您习惯于调试C#代码,则视图反汇编是不得已的方法。
最后,如果需要将任何参数传递给调试的EXE文件,则可以在“
项目属性”页面上将它们与其他参数一起配置(在解决方案资源管理器中,在项目节点中
右键单击->属性 )。

剖析
您还可以通过从
Debugging-> Performance Profiling运行它们来对.exe文件使用分析工具。 在性能分析工具的启动页上,可以选择针对EXE使用哪些工具。 可以在这些文档中找到有关概要分析的更多信息(
https://docs.microsoft.com/zh-cn/visualstudio/profiling/profiling-feature-tour?view=vs-2019 )。

结论
仅此而已。 简要概述如何使用Visual Studio调试和分析未创建但甚至没有源代码的应用程序。 下次需要调试或分析.exe文件时,请确保在Visual Studio中将其打开作为解决方案!