在teamcity中为MSBuild的参数定义带空格的Path



我正在teamcity中执行Build步骤,在该步骤中,我必须为MSBuildExtensionPath提供一个替代路径。MS构建必须构建一个解决方案。在命令行参数中,我试图给出如下路径:

/p:MSBuildExtensionsPath=C:Program Files (x86)MSBuild
/p:MSBuildExtensionsPath=C:Program Files (x86)MSBuild
/p:MSBuildExtensionsPath="C:Program Files (x86)MSBuild"
/p:MSBuildExtensionsPath="C:Program Files (x86)MSBuild"

它们似乎都不起作用。首先是

Starting: .NET SDK 5.0.202 "C:Program Filesdotnetdotnet.exe" msbuild C:BuildAgentwork69c3cf0148257793WorkProjectDWH.sln /p:Configuration=Release @C:BuildAgenttempagentTmp1.rsp "/p:MSBuildExtensionsPath="C:Program Files (x86)MSBuild""

然后错误

MSBUILD:error MSB1008:只能指定一个项目。切换:文件

不知怎么的/p: MSBuildExtensionPath=";C: \Program Files(x86(\MBuild"quot;已标记报价。

您的命令有一些错误,不应该为/p:MSBuildExtensionsPath=xxx添加""。并且不要添加。使用C:Program Files (x86)MSBuild

试试这个:

msbuild C:BuildAgentwork69c3cf0148257793WorkProjectDWH.sln /p:Configuration=Release @C:BuildAgenttempagentTmp1.rsp /p:MSBuildExtensionsPath="C:Program Files (x86)MSBuild"

此外,如果您更改MSBuildExtensionsPath属性,您应该注意以下提示:

C:Program Files (x86)MSBuild是旧的VS2015或以前的MSBuild路径。如果您的解决方案包含新的sdk net core项目,则无法构建它,因为添加了net core>VS2017VS2019 16.8之后支持Net 5.0。您应该注意这一点。

如果你的解决方案都是非sdknet框架项目,你可以使用你的方法。

更新

你的操作系统很奇怪。VS2017和VS2019的Build Tool不支持Windows Server 2012

并且VS2015构建工具支持WindowsServer2012,并且它只构建非sdk网络框架项目,而不是网络核心项目。

此外,net core 5.x不支持Windows Server 2012。只有Net core 2.1能做到这一点。然而,这太旧了,可能无法很好地与新的sdk项目配合使用。

如果你仍然坚持,你可以试试这些:

下载VS2015构建工具,并下载Net Core 2.1 Sdk等。当你在WindowsServer2012下使用它时,你应该卸载任何其他的net-core-sdk。

使用bat文件,然后拆分解决方案,并使用不同的MSBuild构建每个项目。您可以使用BAT文件。

"C:Program Files (x86)MSBuild14.0BinMSBuild.exe" xxx.csproj -t:build //for non-sdk projects
dotnet build xxx.csproj // for new-sdk projects

这可能是由于基于java的命令行解析器在TeamCity中的工作方式。可能看起来有违直觉,但请尝试将整个定义用引号括起来。这对我有效。所以在你的情况下,它看起来像

"/p:MSBuildExtensionsPath=C:Program Files (x86)MSBuild"

请注意,如果您需要在路径中使用尾部斜线,则需要将其加倍,就像中一样

"/p:MSBuildExtensionsPath="C:Program Files (x86)MSBuild\"

相关内容

最新更新