.net - 使用任何 CPU 时,TeamCity .NET Runner 错误地引用平台属性

标签 .net msbuild teamcity

我有一些由 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/

相关文章:

msbuild - 调试 CMake 项目创建

.net - 如何提高团队建设性能?

c# - session 超时

.net - 更改/添加控件到窗口打开/保存通用对话框

msbuild - 如何为 msbuild 构建的 C++ 项目设置输出目录?

msbuild - 如何控制在 .NET4 和 4.5RC 之间使用哪个版本的 msbuild 文件?

c# - Nuget 安装包成功但未向 csproj 添加引用

c# - 录音机 c# UWP

maven - 当在Team City CI上调用Gradle安装任务时,Maven Artifact 会部署到错误的位置

svn - 选择分支策略来满足我们的部署需求