通过远程测试,开发人员可将 Visual Studio 2022 连接到远程环境来运行和调试测试。 如果有跨平台开发人员在将代码部署到多个不同的目标环境中,例如不同的 Windows 或 Linux 操作系统,那么他们适合使用此使用。 例如,开发人员通常将更改推送到 CI 管道,以从 Linux 上运行的测试获取反馈。 而有了远程测试功能,你可将测试资源管理器连接到远程环境,直接从 Visual Studio 运行 Linux 测试。
计划使用
“输出”
>
“测试”
窗格监视到远程环境的连接状态。
例如,如果容器停止,
“输出”
>
“测试”
窗格中会显示一条消息。 该功能可能无法检测所有方案,因此,如果看起来像断开了连接,请计划检查你的输出。 特别是,如果
“输出”
窗格未设置为“测试”,则可能不会立即看到消息。 如果断开了连接,你可使用测试资源管理器中的环境下拉菜单将连接设置回本地环境,然后再次选择远程环境来重新连接。
设置远程测试环境
环境是使用解决方案根目录中的
testenvironments.json
文件指定的。 json 文件结构实现以下架构:
"version": "1", // value must be 1
"environments": [
{ "name": "<unique name>", ... },
testenvironments.json 中环境的属性
testenvironments.json
文件具有以下环境属性。
properties
localRoot
string
[可选]
本地计算机上的路径(绝对目录或相对于解决方案目录的路径),该目录投影到远程环境中。 如果未指定,则默认值为 git 存储库上下文中的存储库根目录(在 Visual Studio 2022 版本 17.1 及更高版本上)。 在 git 存储库外部,默认值为解决方案目录。
指示远程环境的类型。 值可以是
docker
、
wsl
或
ssh
。
dockerImage
string
在 Docker 环境中加载的 Docker 映像的名称。
如果环境
type
是
docker
,则此值是必需的。
dockerFile
string
Docker 文件的路径(相对于解决方案目录)以生成映像并在 Docker 环境中加载。
如果环境
type
是
docker
,则此值是必需的。
wslDistribution
string
要在其中运行测试环境的本地 WSL 分发的名称。
如果环境
type
是
wsl
,则此值是必需的。
remoteUri
string
指定到远程计算机的连接的 URI。 例如
ssh://user@hostname:22
。
如果环境
type
是
ssh
,则此值是必需的。
本地容器连接
若要连接到本地运行的容器,必须在本地计算机上安装
Docker 桌面
。 还可以选择
启用 WSL2 集成
,以获得更好的性能。
对于 Dockerfile,可以在解决方案根目录中的
testEnvironments.json
文件中指定环境。 它使用以下属性:
"name": "<name>",
"type": "docker",
"dockerImage": "<docker image tag>",
以下示例显示了名为
<mcr.microsoft.com/dotnet/sdk>
的本地容器映像的
testenvironments.json
文件。
"version": "1",
"environments": [
"name": "linux dotnet-sdk-5.0",
"type": "docker",
"dockerImage": "mcr.microsoft.com/dotnet/sdk"
下面的示例演示了一个 Dockerfile,它用于运行面向 .NET 5.0 的测试。 第二行确保调试程序可在容器中连接并运行。
FROM mcr.microsoft.com/dotnet/sdk:5.0
RUN wget https://aka.ms/getvsdbgsh && \
sh getvsdbgsh -v latest -l /vsdbg
该容器必须在本地计算机上具有生成的映像。 可以使用命令 docker build -t <docker image name> -f <path to Dockerfile> .
生成容器,请务必在命令末尾包含句点 .
。
以下示例演示如何使用 dockerFile
属性而不是 dockerImage
属性。
"version": "1",
"environments": [
"name": "GitServiceUnix",
"type": "docker",
"dockerFile": "Dockerfile.test"
本地 WSL2 连接
若要在 WSL2 上远程运行测试,必须在本地计算机上启用 WSL2 集成。
可以使用以下架构在解决方案根目录中的 testEnvironments.json 文件中指定环境。 将 wslDistribution
属性的 <Ubuntu>
值替换为 WSL2 分发版的安装。
"version": "1",
"environments": [
"name": "WSL-Ubuntu",
"type": "wsl",
"wslDistribution": "Ubuntu"
SSH 连接
可通过“工具”>“选项”>“跨平台”>“连接管理器”来添加或删除 SSH 连接。 选择“添加”以输入所需的主机名、端口和任何凭据。
可以使用以下架构在解决方案根目录中的 testEnvironments.json 文件中指定环境。 将 remoteUri
属性的 <ssh://user@hostname:22>
值替换为 SSH 值。
"version": "1",
"environments": [
"name": "ssh-remote",
"type": "ssh",
"remoteUri": "ssh://user@hostname:22"
远程 Windows 环境的先决条件
查看远程 Windows 环境的以下先决条件。
确保在远程计算机上启用了 Windows 投影文件系统。 可以从管理员 PowerShell 窗口运行以下代码以启用它:
Enable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart
根据需要重启环境。
确保已设置 SSH。 可以在安装 OpenSSH 中查看这些步骤。 从管理员 PowerShell 窗口运行以下命令来启动 SSH 服务器:
Start-Service sshd
确保安装测试所需的适当 .NET 运行时。 可以下载适用于 Windows 的 .NET。
准备用于调试测试的环境:
在远程环境中安装远程工具 SKU。
以管理员身份启动远程调试器,并确保 Visual Studio 用户具有连接权限。