在 Visual Studio 中从 DLL 项目调试(C#、C++、Visual Basic、F#)
调试 DLL 项目的一种方法是在 DLL 项目属性中指定调用应用。 随后可以从 DLL 项目本身开始调试。 若要使此方法有效,应用必须调用与配置相同的位置处的相同 DLL。 如果应用找到并加载了不同版本的 DLL,则该版本不包含断点。 有关调试 DLL 的其他方法,请参阅调试 DLL 项目。
如果托管应用调用本机 DLL,或本机应用调用托管 DLL,则可以同时调试 DLL 和调用应用。 有关详细信息,请参阅如何:在混合模式下调试。
本机和托管 DLL 项目具有不同的设置来指定调用应用。
在本机 DLL 项目中指定调用应用
在解决方案资源管理器中选择 C++ DLL 项目。 选择“属性”图标,按 Alt+Enter,或右键单击并选择“属性”。
在“<项目> > 属性页”对话框中,确保窗口顶部的“配置”字段设置为“调试”。
选择“配置属性”>“调试”。
在“要启动的调试器”列表中,选择“本地 Windows 调试器”或“远程 Windows 调试器”。
在“命令”或“远程命令”框中,添加调用应用的完全限定路径和文件名,如 .exe 文件。
向“命令参数”框添加任何必要的程序参数。
选择“确定”。
在 C# DLL 项目中指定调用应用(.NET Core、.NET 5+)
在解决方案资源管理器中选择 C# 或 Visual Basic DLL 项目。 选择“属性”图标,按 Alt+Enter,或右键单击并选择“属性”。
在“调试”选项卡中,选择“打开调试启动配置文件 UI”。
在“启动配置文件”对话框中,选择“创建新配置文件”图标,然后选择“可执行文件”。
在新配置文件中的“可执行文件”下,浏览到可执行文件(.exe 文件)的位置并将其选定。
在“启动配置文件”对话框中,记下默认配置文件的名称,然后将其选定并删除。
将新配置文件重命名为与默认配置文件相同的名称。
或者,可以手动编辑 launchSettings.json 以获取相同的结果。 你希望 launchSettings.json 中的第一个配置文件与类库的名称匹配,并希望它在文件中列在第一个。
在托管 DLL 项目中指定调用应用
在解决方案资源管理器中选择 C# 或 Visual Basic DLL 项目。 选择“属性”图标,按 Alt+Enter,或右键单击并选择“属性”。
确保窗口顶部的“配置”字段设置为“调试” 。
在“启动操作”下:
对于 .NET Framework DLL。选择“启动外部程序”,并添加调用应用的完全限定路径和名称。
或者,选择“使用 URL 启动浏览器”并填写本地 ASP.NET 应用的 URL。
- 对于 .NET Core DLL,“调试”属性页是不同的。 从“启动”下拉列表中选择“可执行文件”,然后在“可执行文件”字段中添加调用应用的完全限定路径和名称。
- 对于 .NET Core DLL,“调试”属性页不同。 从“启动”下拉列表中选择“可执行文件”,然后在“可执行文件”字段中添加调用应用的完全限定路径和名称。
在“命令行参数”或“应用程序参数”字段中添加任何所需的命令行参数。
使用“文件”>“保存选定项”或 Ctrl+S 来保存更改。
从 DLL 项目调试
在 DLL 项目中设置断点。
右键单击 DLL 项目,然后选择“设为启动项目”。
确保“解决方案配置”设置为“调试” 。 按 F5,然后单击绿色“启动”箭头,或选择“调试”>“启动调试”。
其他提示:
如果调试未命中断点,请确保 DLL 输出(默认情况为 <>\Debug 文件夹)是调用应用进行调用的位置。
如果要从本机 DLL 中断托管调用应用中的代码,或进行相反的转换,请启用混合模式调试。
在某些情况下,可能需要告诉调试器在何处查找源代码。 有关详细信息,请参阅使用“未加载符号/未加载源”页面。