如何在执行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
相关产品推荐
相关产品推荐

