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

如何在Bash中向MSBuild传递带通配符的复杂参数?

解决Bash中dotnet test排除规则的解析错误

在Bash环境下,[]和*属于Shell的特殊通配符字符,会被提前解析,导致你传递的Exclude参数被篡改,进而触发MSBUILD的未知开关错误。可以通过以下几种方式解决:

方法1:用单引号包裹排除规则

单引号会让Bash完全忽略内部所有特殊字符,直接将原内容传递给dotnet命令:

dotnet test //p:CollectCoverage="true" //p:CoverletOutputFormat="lcov" //p:Exclude='[*]System.Text.RegularExpressions.Generated.*'

方法2:转义特殊字符

对[、]和*分别添加反斜杠\,告诉Bash这些是普通字符而非通配符:

dotnet test //p:CollectCoverage="true" //p:CoverletOutputFormat="lcov" //p:Exclude="\[*\]System.Text.RegularExpressions.Generated.\*"

方法3:双引号内转义关键字符

如果需要保留双引号(比如参数内有空格的场景),只需转义[和]即可(最后一个*在无匹配文件时Bash通常会保留,但转义更稳妥):

dotnet test //p:CollectCoverage="true" //p:CoverletOutputFormat="lcov" //p:Exclude="\[*\]System.Text.RegularExpressions.Generated.*"

本质原因是Bash会尝试将[*]解析为字符集匹配规则,去匹配当前目录下的文件,导致实际传递给MSBUILD的参数并非你预期的格式,从而引发错误。上述方法都能让排除规则完整传递给dotnet test命令,实现和PowerShell中一致的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 11:52:14