.NET Core 3.1自动化框架执行dotnet test报MSB4803错误求助
问题根因与解决方案
根因分析
Visual Studio 2019运行.NET Core项目时,会自动切换使用基于.NET Framework的MSBuild版本,该版本包含ResolveComReference任务,能够正常解析COM引用。而dotnet test命令默认调用的是**.NET Core版MSBuild**,这个版本移除了对COM引用相关任务的支持,因此执行时会抛出MSB4803错误。
解决方案
1. 本地命令行运行测试
放弃dotnet test,改用Visual Studio自带的.NET Framework版MSBuild构建项目,再用vstest.console.exe执行测试:
- 构建项目命令(替换为你的VS安装路径和项目名称):
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\MSBuild.exe" YourTestProject.csproj /p:Configuration=Release
- 运行测试命令:
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" YourTestProject\bin\Release\netcoreapp3.1\YourTestProject.dll
2. Jenkins自动化运行配置
在Windows节点的Jenkins任务中,通过调用VS2019的工具链来执行测试:
- 确保Jenkins节点已安装Visual Studio 2019(需包含"测试工具"组件)
- 添加"执行Windows批处理命令"步骤,使用VS环境变量定位工具路径(无需硬编码路径):
- 构建命令:
"%VS160COMNTOOLS%..\..\MSBuild\Current\Bin\MSBuild.exe" YourTestProject.csproj /p:Configuration=Release- 测试命令:
"%VS160COMNTOOLS%..\..\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" YourTestProject\bin\Release\netcoreapp3.1\YourTestProject.dll - 额外注意:Jenkins节点必须为Windows环境,且目标COM组件已在该机器上完成注册。
内容的提问来源于stack exchange,提问作者Abhishek Shrirang
相关产品推荐
相关产品推荐

