在 Visual Studio 中从 DLL 项目调试(C#、C++、Visual Basic、F#)

调试 DLL 项目的一种方法是在 DLL 项目属性中指定调用应用。 随后可以从 DLL 项目本身开始调试。 若要使此方法有效,应用必须调用与配置相同的位置处的相同 DLL。 如果应用找到并加载了不同版本的 DLL,则该版本不包含断点。 有关调试 DLL 的其他方法,请参阅调试 DLL 项目

如果托管应用调用本机 DLL,或本机应用调用托管 DLL,则可以同时调试 DLL 和调用应用。 有关详细信息,请参阅如何:在混合模式下调试

本机和托管 DLL 项目具有不同的设置来指定调用应用。

在本机 DLL 项目中指定调用应用

  1. 在解决方案资源管理器中选择 C++ DLL 项目。 选择“属性”图标,按 Alt+Enter,或右键单击并选择“属性”。

  2. 在“<项目> > 属性页”对话框中,确保窗口顶部的“配置”字段设置为“调试”。

  3. 选择“配置属性”>“调试”。

  4. 在“要启动的调试器”列表中,选择“本地 Windows 调试器”或“远程 Windows 调试器”。

  5. 在“命令”或“远程命令”框中,添加调用应用的完全限定路径和文件名,如 .exe 文件。

    Debug Properties window

  6. 向“命令参数”框添加任何必要的程序参数。

  7. 选择“确定”。

在 C# DLL 项目中指定调用应用(.NET Core、.NET 5+)

  1. 在解决方案资源管理器中选择 C# 或 Visual Basic DLL 项目。 选择“属性”图标,按 Alt+Enter,或右键单击并选择“属性”。

  2. 在“调试”选项卡中,选择“打开调试启动配置文件 UI”。

  3. 在“启动配置文件”对话框中,选择“创建新配置文件”图标,然后选择“可执行文件”。

    Screenshot of the UI to create a new debug profile.

  4. 在新配置文件中的“可执行文件”下,浏览到可执行文件(.exe 文件)的位置并将其选定。

  5. 在“启动配置文件”对话框中,记下默认配置文件的名称,然后将其选定并删除。

  6. 将新配置文件重命名为与默认配置文件相同的名称。

    或者,可以手动编辑 launchSettings.json 以获取相同的结果。 你希望 launchSettings.json 中的第一个配置文件与类库的名称匹配,并希望它在文件中列在第一个。

在托管 DLL 项目中指定调用应用

  1. 在解决方案资源管理器中选择 C# 或 Visual Basic DLL 项目。 选择“属性”图标,按 Alt+Enter,或右键单击并选择“属性”。

  2. 确保窗口顶部的“配置”字段设置为“调试” 。

  3. 在“启动操作”下:

    • 对于 .NET Framework DLL。选择“启动外部程序”,并添加调用应用的完全限定路径和名称。

    • 或者,选择“使用 URL 启动浏览器”并填写本地 ASP.NET 应用的 URL。

    • 对于 .NET Core DLL,“调试”属性页是不同的。 从“启动”下拉列表中选择“可执行文件”,然后在“可执行文件”字段中添加调用应用的完全限定路径和名称。
    • 对于 .NET Core DLL,“调试”属性页不同。 从“启动”下拉列表中选择“可执行文件”,然后在“可执行文件”字段中添加调用应用的完全限定路径和名称。
  4. 在“命令行参数”或“应用程序参数”字段中添加任何所需的命令行参数。

    C# Debug Properties window

  5. 使用“文件”>“保存选定项”或 Ctrl+S 来保存更改。

从 DLL 项目调试

  1. 在 DLL 项目中设置断点。

  2. 右键单击 DLL 项目,然后选择“设为启动项目”。

  3. 确保“解决方案配置”设置为“调试” 。 按 F5,然后单击绿色“启动”箭头,或选择“调试”>“启动调试”。

其他提示:

  • 如果调试未命中断点,请确保 DLL 输出(默认情况为 <>\Debug 文件夹)是调用应用进行调用的位置。

  • 如果要从本机 DLL 中断托管调用应用中的代码,或进行相反的转换,请启用混合模式调试

  • 在某些情况下,可能需要告诉调试器在何处查找源代码。 有关详细信息,请参阅使用“未加载符号/未加载源”页面