我想在使用Jenkins的Ant 1.9.7 exec任务的Windows Server 2012机器上运行msbuild。从Ant执行MSBuild
命令行,我试图重建是:
msbuild solution.sln /p:Platform="Any CPU" /p:Configuration:Release
我在Exec任务最新尝试,看起来像:
<property name="platformParameter" value='/p:Platform="Any CPU"' />
<echo message="platformParameter = ${platformParameter}" />
<exec executable="msbuild" failonerror="true">
<arg value="solution.sln" />
<arg value="/p:Configuration=Release" />
<arg value="${platformParameter}" />
</exec>
环境是正确的那么MSBuild的是可用的。从上面我得到的输出是:
[echo] platformParameter = /p:Platform="Any CPU"
[exec] Microsoft (R) Build Engine version 12.0.40629.0
[exec] [Microsoft .NET Framework, version 4.0.30319.34014]
[exec] Copyright (C) Microsoft Corporation. All rights reserved.
[exec]
[exec] MSBUILD : error MSB1008: Only one project can be specified.
[exec] Switch: CPU
回声输出显示platformParameter正确地包含了什么我想周围的任何CPU双语音标记所要求的MSBuild的。使用单个语音标记时,尝试构建解决方案时没有语音标记或AnyCPU不起作用。我相信,如果我正在构建一个项目而不是解决方案,我将能够使用AnyCPU而不是“任何CPU”作为该平台。
的错误似乎是的MSBuild没有看到形成正确的平台参数,因此可能认为我这样做:
msbuild solution.sln /p:Platform=Any CPU /p:Configuration:Release
在认为CPU是第二个项目/解决方案。
我尝试了几个不同的尝试,并通过exec任务(例如使用"e;代替双重语音标记)将含有双重语音标记的参数包含到msbuild中,通常具有与上面所示相同的结果。
任何人都可以提出正确/一个工作方法来获取平台参数到一个arg的exec任务运行到msbuild? 即如何将包含双语音标记分隔元素的arg定义为exec任务?
在此先感谢。
您是否尝试过这样AnyCPU'平台说'删除的空间? –
另外尝试指定目标参数,以及'/ t:Build' – Tuffwer
@JamesReed - 是的,根据我的开篇文字,使用AnyCPU而没有空格仅在您针对项目文件而非解决方案构建时才有效 - 不一致微软已经表示他们无意寻址 –