You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

远程执行MSTest批处理时出现vstest文件未找到错误求助

远程执行MSTest批处理时测试文件路径错误问题分析

批处理脚本

echo Setting path 
SET PATH=%PATH%;D:\My-Tests-Folder\TestPlatform\tools\net462\Common7\IDE\Extensions\TestPlatform
cd "D:\My-Tests-Folder\MSTest"
start cmd /k vstest.console.exe MyTestProject.dll /testcasefilter:TestCategory=Category123

场景描述

我用上述批处理运行Visual Studio 2019 MSTest项目的单元测试,已把测试项目所有DLL复制到D:\My-Tests-Folder\MSTest目录。本地执行批处理时,所有测试都能成功运行。

问题

把该文件夹复制到远程机器的D盘后,从本地访问远程文件夹执行批处理,出现以下错误:

The test source file "C:\Windows\MyTestProject.dll" provided was not found.

MyTestProject.dll实际在D:\My-Tests-Folder\MSTest目录,不在C:\Windows下。但通过远程桌面连接到远程机器后执行批处理却能成功,只有本地远程访问执行时失败,这是什么原因?

原因分析

  • 远程执行时工作目录切换无效:从本地访问远程文件夹执行批处理时,cd "D:\My-Tests-Folder\MSTest"切换的是本地机器的D盘目录,而非远程机器的D盘。此时vstest.console.exe会以本地的默认工作目录(通常是C:\Windows)去查找DLL,自然找不到。
  • 远程桌面执行正常是因为批处理在远程机器的本地会话中运行,cd命令正确切换了远程机器的目录,vstest.console.exe能定位到正确的DLL路径。

解决方案

  1. 使用绝对路径调用DLL:直接给vstest.console.exe指定远程机器上DLL的绝对路径,避免依赖工作目录:
    echo Setting path 
    SET PATH=%PATH%;D:\My-Tests-Folder\TestPlatform\tools\net462\Common7\IDE\Extensions\TestPlatform
    start cmd /k vstest.console.exe "D:\My-Tests-Folder\MSTest\MyTestProject.dll" /testcasefilter:TestCategory=Category123
    
  2. 在远程上下文执行批处理:使用psexec这类工具,直接在远程机器的本地环境中运行批处理,确保所有命令都在远程机器的系统上下文生效。

内容的提问来源于stack exchange,提问作者StackTrace

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 15:30:11