在 Visual Studio 中远程调试 C# 或 Visual Basic 项目
若要调试已部署到另一台计算机上的 Visual Studio 应用程序,请在部署了应用的计算机上安装并运行远程工具,将项目配置为从 Visual Studio 连接到远程计算机,然后运行应用。
如需详细了解如何远程调试通用 Windows 应用 (UWP),请参阅调试已安装的应用包。
要求
Windows 7 和更高版本以及从 Windows Server 2008 Service Pack 2 开始的 Windows Server 版本支持远程调试器。 有关要求的完整列表,请参阅要求。
注意
不支持在通过代理连接的两台计算机之间进行调试。 不建议通过高延迟或低带宽连接(如拨号 Internet)或跨国家/地区的 Internet 进行调试,否则可能会导致调试失败或速度过慢。
下载和安装远程工具
在要调试的远程设备或服务器上(而不是 Visual Studio 计算机上),请从下表中的链接下载并安装正确的远程工具版本。
- 下载适用于 Visual Studio 版本的远程工具的最新更新。 早期远程工具版本与较高版本的 Visual Studio 不兼容。 (例如,如果使用的是 Visual Studio 2019,请下载 Visual Studio 2019 远程工具的最新更新。在这种情况下,请不要下载 Visual Studio 2022 远程工具。)
- 下载与要安装远程工具的计算机具有相同体系结构的远程工具。 例如,如果要在运行 x64 操作系统的远程计算机上调试 x86 应用程序,请安装 x64 远程工具。 若要在 ARM64 操作系统上调试 x86、ARM 或 x64 应用程序,请安装 ARM64 远程工具。
Version | 链接 | 说明 |
---|---|---|
Visual Studio 2022 | 远程工具 | 兼容所有 Visual Studio 2022 版本。 下载与设备操作系统(x86、x64 (AMD64) 或 ARM64)匹配的版本。 在较旧版本的 Windows 服务器上,请参阅取消阻止文件下载,获取有关下载远程工具的帮助。 |
Visual Studio 2019 | 远程工具 | Visual Studio 2019 的远程工具可从 My.VisualStudio.com 获取。 如果出现提示,请加入免费的 Visual Studio Dev Essentials 计划,或使用 Visual Studio 订阅 ID 登录。 下载与设备操作系统(x86、x64 (AMD64) 或 ARM64)匹配的版本。 在较旧版本的 Windows 服务器上,请参阅取消阻止文件下载,获取有关下载远程工具的帮助。 |
Visual Studio 2017 | 远程工具 | Visual Studio 2017 的远程工具可从 My.VisualStudio.com 获取。 如果出现提示,请加入免费的 Visual Studio Dev Essentials 计划,或使用 Visual Studio 订阅 ID 登录。 下载与设备操作系统(x86、x64 (AMD64) 或 ARM64)匹配的版本。 在 Windows 服务器上,请参阅取消阻止文件下载,获取有关下载远程工具的帮助。 |
Visual Studio 2015 | 远程工具 | Visual Studio 2015 的远程工具可从 My.VisualStudio.com 获取。 如果出现提示,请加入免费的 Visual Studio Dev Essentials 计划,或使用 Visual Studio 订阅 ID 登录。 在 Windows 服务器上,请参阅取消阻止文件下载,获取有关下载远程工具的帮助。 |
Visual Studio 2013 | 远程工具 | Visual Studio 2013 文档中的下载页面 |
Visual Studio 2012 | 远程工具 | Visual Studio 2012 文档中的下载页面 |
Version | 链接 | 说明 |
---|---|---|
Visual Studio 2019 | 远程工具 | 兼容所有 Visual Studio 2019 版本。 下载与设备操作系统(x86、x64 (AMD64) 或 ARM64)匹配的版本。 在 Windows 服务器上,请参阅取消阻止文件下载,获取有关下载远程工具的帮助。 有关最新版远程工具的信息,请打开 Visual Studio 2022 文档。 |
Visual Studio 2017 | 远程工具 | 兼容所有 Visual Studio 2017 版本。 下载与设备操作系统(x86、x64 (AMD64) 或 ARM64)匹配的版本。 在 Windows 服务器上,请参阅取消阻止文件下载,获取有关下载远程工具的帮助。 |
Visual Studio 2015 | 远程工具 | Visual Studio 2015 的远程工具可从 My.VisualStudio.com 获取。 如果出现提示,请加入免费的 Visual Studio Dev Essentials 计划,或使用 Visual Studio 订阅 ID 登录。 在 Windows 服务器上,请参阅取消阻止文件下载,获取有关下载远程工具的帮助。 |
Visual Studio 2013 | 远程工具 | Visual Studio 2013 文档中的下载页面 |
Visual Studio 2012 | 远程工具 | Visual Studio 2012 文档中的下载页面 |
可以通过将 msvsmon.exe 复制到远程计算机,而不是安装远程工具来运行远程调试器。 但是,远程调试器配置向导 (rdbgwiz.exe) 仅在安装远程工具时才可用。 如果要将远程调试器作为服务运行,则可能需要使用向导进行配置。 有关详细信息,请参阅(可选)将远程调试器配置为服务。
注意
- 若要在 ARM 设备上调试 Windows 10 或更高版本应用,请使用 ARM64,它可用于最新版本的远程工具。
- 若要在 Windows RT 设备上调试 Windows 10 应用,请使用 ARM,它仅在 Visual Studio 2015 远程工具下载中可用。
- 若要在 ARM64 操作系统上调试 x64 应用程序,请运行随 ARM64 远程工具一起安装的 x64 msvsmon.exe。
提示
在某些情况下,从文件共享运行远程调试器可能是最有效的方法。 有关详细信息,请参阅从文件共享运行远程调试器。
设置远程调试器
在远程计算机上,从“开始”菜单中查找并启动“远程调试器” 。
如果你没有远程计算机的管理权限,请右键单击“远程调试器”应用,然后选择“以管理员身份运行” 。 否则,正常启动即可。
如果打算附加到以管理员身份运行或在其他用户帐户(如 IIS)下运行的进程,请右键单击“远程调试器”应用,然后选择“以管理员身份运行” 。 有关详细信息,请参阅以管理员身份运行远程调试器。
首次启动远程调试器时(或在配置它之前),会显示“远程调试配置”向导。
在大多数情况下,请选择“下一步”,直到最后到达该向导的“配置 Windows 防火墙”页。
如果未安装 Windows Web 服务 API(仅会在 Windows Server 2008 R2 上发生这种情况),请选择“安装”按钮。
请至少选择一种要对其使用远程工具的网络类型。 如果这些计算机通过域连接,则必须选择第一项。 如果这些计算机通过工作组或家庭组连接,请根据需要选择第二或第三项。
接下来,选择“完成”以启动远程调试器。
接下来,选择“配置远程调试”以启动远程调试器。
配置完成后,将显示“远程调试器”窗口。
远程调试器正在等待连接。 使用显示的服务器名称和端口号在 Visual Studio 中设置远程连接配置。
若要停止远程调试器,请选择“文件”>“退出” 。 你可以从“开始”菜单或通过以下命令行重新启动它:
<Remote debugger installation directory>\msvsmon.exe
注意
如果需要为其他用户添加权限,请更改远程调试器的身份验证模式或端口号,请参阅配置远程调试器。
远程调试项目
调试器不能将 Visual C# 或 Visual Basic 桌面应用程序部署到远程计算机,但你仍然可以按如下所示方法远程调试它们。 以下过程假定你希望在名为 MJO-DL 的计算机上调试它,如下图所示。
创建一个名为“MyWpf”的 WPF 项目。
如果尝试远程调试 MAUI 应用而不是 WPF,请参阅在 Windows 上远程调试 .NET MAUI 应用。
在代码中的某个容易到达的地方设置断点。
例如,可在按钮处理程序中设置断点。 为此,请打开“MainWindow.xaml”,并从“工具箱”中添加按钮控件,然后双击该按钮以打开其处理程序。
在“解决方案资源管理器”中,右键单击项目,然后选择“属性”。
在“属性”页上,选择"调试"选项卡 。
对于面向 .NET Core 或 .NET 5+ 的 C# 项目,从 Visual Studio 2022 开始,从“调试”选项卡中选择“调试启动配置文件 UI”,以配置远程调试设置。
否则,可以直接在“调试”选项卡中更改远程调试设置。
请确保“工作目录”文本框为空。
选择“使用远程计算机”,然后在文本框中键入“yourmachinename:port” 。 (端口号显示在远程调试器窗口中。端口号在每个版本的 Visual Studio 中递增 2)。
在此示例中,使用:
Visual Studio 2022 上的 MJO-DL:4026
Visual Studio 2019 上的 MJO-DL:4024
请确保未选中“启用本机代码调试”。
生成项目。
在远程计算机上创建一个文件夹,其路径与 Visual Studio 计算机上的 Debug 文件夹相同:<源路径>\MyWPF\MyWPF\bin\Debug。
将刚才从 Visual Studio 计算机生成的可执行文件复制到远程计算机上新创建的文件夹。
注意
不要对代码进行更改或重新生成(否则必须重复此步骤)。 复制到远程计算机的可执行文件必须与你的本地源和符号完全匹配。
可手动复制项目,使用 XCopy、Robocopy、PowerShell 或其他选项。
请确保远程调试器正在目标计算机上运行(如果没有,请在“开始”菜单中搜索“远程调试器”) 。 远程调试器窗口如下所示。
在 Visual Studio 中,开始调试(单击“调试”>“开始调试”,或按 F5)。
如果出现提示,请输入网络凭据以连接到远程计算机。
所需凭据因网络安全配置而异。 例如,在域计算机上,你可以输入域名和密码。 在非域计算机上,可以输入计算机名和有效用户帐户名(如 MJO-DL\name@something.com)以及正确的密码。
应看到远程计算机上打开了 WPF 应用程序的主窗口。
如有必要,请采取操作来命中断点。 你应看到该断点处于活动状态。 如果不是,则尚未加载应用程序的符号。 请重试,如果这不起作用,请在了解符号文件和 Visual Studio 的符号设置中获取有关加载符号以及如何对其进行故障排除的信息。
在 Visual Studio 机器上,你应看到执行在断点处停止。
如果具有任何需要由应用程序使用的非代码文件,则需要将其包含在 Visual Studio 项目中。 为其他文件创建项目文件夹(在“解决方案资源管理器”中,单击“添加”>“新建文件夹”)。 然后,将文件添加到文件夹(在“解决方案资源管理器”中,单击“添加”>“现有项目”,然后选择文件)。 在每个文件的“属性”页中,将“复制到输出目录”设置为“始终复制” 。
在 Windows 上远程调试 .NET MAUI 应用
.NET MAUI 应用是部署时需要注册的打包应用,而不仅仅是复制到远程计算机。 若要远程调试,可以部署应用的未打包版本。
使用下列方法之一进行远程调试:
使用使用 CLI 发布适用于 Windows 的未打包 .NET MAUI 应用中所述的步骤将应用作为未打包应用发布到远程设备,然后按照本文中的步骤进行远程调试。 (跳过复制应用的步骤。)
按照本文中的步骤进行操作,包括为项目创建调试启动配置文件的步骤。 在开始调试之前,请手动编辑 launchSettings.json 文件,并将 commandName
Project
值替换为MsixPackage
,如此处所示。"Remote Profile": { "commandName": "MsixPackage", "remoteDebugEnabled": true, "remoteDebugMachine": "170.200.20.22", "authenticationMode": "None" }
开始调试时,此方法首先部署应用的未打包版本并启动它。
注意
将值更改为
MsixPackage
后,无法在“调试启动配置文件”对话框中编辑 launchSettings.json。
使用远程符号设置调试
你应能够使用你在 Visual Studio 计算机生成的符号调试你的代码。 使用本地符号时远程调试器的性能更佳。 如果必须使用远程符号,则需要告诉远程调试监视器以查找远程计算机上的符号。
你可以使用以下 msvsmon 命令行开关将远程符号用于托管代码:Msvsmon /FallbackLoadRemoteManagedPdbs
有关详细信息,请参阅远程调试帮助(在远程调试器窗口中,按 F1 或依次单击“帮助”>“用法”)。