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

如何在执行dotnet test命令时排除vcxproj类型的C++项目

解决dotnet test排除C++ vcxproj项目的可行方案

以下三种方案都可以实现你要的效果,按需选择即可:

方案1:命令行临时过滤(最快捷)

执行测试时直接通过MSBuild参数排除所有vcxproj项目:

dotnet test /p:Exclude="**/*.vcxproj"

如果你明确知道所有测试项目的路径,也可以直接指定测试项目执行,跳过整个解决方案的加载逻辑:

dotnet test 测试项目目录/测试项目名.csproj

如果你已经通过msbuild完成了全量项目构建,还可以加--no-build参数跳过构建步骤,避免触发C++项目的加载逻辑:

dotnet test --no-build

方案2:使用解决方案过滤器(长期使用推荐)

该方案可以同时解决dotnet build和dotnet test两个命令的报错问题,不需要再单独用msbuild绕路:

  • 在Visual Studio中打开你的解决方案
  • 在解决方案资源管理器顶部点击「筛选解决方案」按钮,取消勾选所有C++项目
  • 点击「保存过滤器」,将过滤规则保存为后缀为.slnf的文件,例如WithoutCpp.slnf
  • 后续执行dotnet命令时直接指定该过滤器文件即可:
# 仅构建非C++项目
dotnet build WithoutCpp.slnf
# 仅运行非C++项目的测试
dotnet test WithoutCpp.slnf

方案3:修改C++项目属性自动跳过

直接编辑你的C++项目.vcxproj文件,在文件顶部第一个<PropertyGroup>节点中添加以下配置:

<PropertyGroup>
  <!-- 原有配置保留,新增以下两行 -->
  <IsTestProject>false</IsTestProject>
  <EnableDefaultCompileItems Condition="'$(UsingMicrosoftNETSdk)' == 'true'">false</EnableDefaultCompileItems>
</PropertyGroup>

添加后dotnet CLI会自动识别该项目不属于.NET生态,执行所有dotnet命令时都会自动跳过,不会再触发MSB4019报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:09:03