我正在尝试使用Jenkins的Ant 1.9.7 exec任务在Windows Server 2012计算机上运行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
echo输出显示platformParameter正确包含我想要的任何CPU周围的双语音标记,如msbuild所要求的那样。使用单个语音标记,在尝试构建解决方案时,没有语音标记或AnyCPU不起作用。我相信,如果我正在构建项目而不是解决方案,我将能够使用AnyCPU而不是&#34;任何CPU&#34;对于平台。
错误似乎是msbuild没有看到正确形成的Platform参数,因此可能认为我正在做:
msbuild solution.sln /p:Platform=Any CPU /p:Configuration:Release
认为CPU是第二个项目/解决方案。
我尝试了一些不同的尝试,通过exec任务(例如使用&#34; e;代替双重语音标记),通过exec任务获得包含双重语音标记的参数(通常使用结果如上所示。
任何人都可以建议正确的/一种工作方法将Platform参数转换为一个arg,以便exec任务运行到msbuild吗? 即如何将包含双重语音标记分隔元素的arg定义为exec任务?
提前致谢。
答案 0 :(得分:1)
问题解决了。
看来我试图先发制人/解决一些不需要解决的问题。
从Windows命令提示符中获取MSBuild,我需要这样做:
msbuild solution.sln /p:Platform="Any CPU" /p:Configuration:Release
如我的问题所述。
对于ant exec任务参数,如果我这样做,则Platform参数似乎完全正常:
<exec executable="msbuild" failonerror="true">
<arg value="solution.sln" />
<arg value="/p:Configuration=Release" />
<arg value="/p:Platform=Any CPU" />
</exec>