VSTS Xamarin.iOS构建任务定义多常量遇MSB1006错误求助
解决VSTS Xamarin.iOS构建任务中DefineConstants参数的问题
我之前在托管macOS代理上配置MSBuild编译常量时也踩过同样的坑,分号的处理确实容易出问题,给你两个亲测有效的解决方案:
方案1:用单引号包裹常量值
直接用单引号把DefineConstants的完整值括起来,这样macOS的shell就不会把分号当成命令分隔符解析,MSBuild也能正确识别多个常量:
/p:DefineConstants='ENABLE_ANALYTICS;ENV_DEV'
方案2:转义分号
给分号添加反斜杠转义,明确告诉shell这个分号是参数的一部分,而非命令结束标记:
/p:DefineConstants=ENABLE_ANALYTICS\;ENV_DEV
为什么之前的写法失败?
- 直接写
/p:DefineConstants=ENABLE_ANALYTICS;ENV_DEV时,macOS shell会把分号当作命令分隔符,把ENV_DEV当成单独的命令执行,这就触发了MSBUILD错误MSB1006。 - 用双引号包裹的写法失败,大概率是因为VSTS构建任务的参数解析逻辑,会把双引号本身传递给MSBuild,或者shell对双引号内的分号仍做了特殊处理,导致MSBuild无法正确识别常量列表。
你可以试试上面两种方法,在托管macOS预览代理上应该都能正常生效。
内容的提问来源于stack exchange,提问作者Sven-Michael Stübe
相关产品推荐
相关产品推荐

