我有一些由 TeamCity 2020(最新版本)构建的 .NET Framework 项目。目前使用的是“MSBuild”Runner 类型——因为这已被弃用,我正在尝试将构建任务转换为使用新的“.NET”Runner 类型。当尝试将参数中的 Platform
属性设置为“Any CPU”时,TeamCity 最终引用了整个参数,这导致 MSBuild 失败。
我正在为此运行者设置以下属性:
- 命令:
msbuild
- 项目:[解决方案文件名]
- MSBuild 版本:
MSBuild 2019
- 配置:
%BuildConfiguration%
(参数值) - 命令行参数:
-property:Platform="Any CPU"-verbosity:minimal -nodeReuse:false
当这个构建运行时,它失败了。在日志中,您可以看到正在运行的 MSBuild 命令:
MSBuild.exe [解决方案文件]/p:Configuration=[配置参数] "-property:Platform="Any CPU""-verbosity:minimal -nodeReuse:false
因为 TeamCity 在 -property:Platform
参数周围放置了双引号,MSBuild 无法识别这一点并认为正在提供多个项目文件,因此它退出。
我试过对“任何 CPU”使用单引号,删除空格,使用 /p:Platform
语法……结果相同。
如何使用 .NET Runner 为“任何 CPU”平台构建 .NET Framework 项目?
最佳答案
在遇到与 TeamCity 类似的问题后,偶然发现了这篇文章。我们正在使用属性开关将引用路径传递给构建过程。完整的开关是
/property:ReferencePath="\\dllserver\referenceroot\.NET Framework 4"
然后导致臭名昭著的错误消息
msb1008: only one project can be specified
我的工作是在整个设置周围加上引号,而不仅仅是包含空格的部分 - 就像这样:
"/property:ReferencePath=\\dllserver\referenceroot\.NET Framework 4"
也许这对其他人也有用。
关于.net - 使用任何 CPU 时,TeamCity .NET Runner 错误地引用平台属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63519617/