我正在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>VS2017。VS2019 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\"