从 Ant 执行 MSBuild
Executing MSBuild from Ant
我正在尝试 运行 使用来自 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 正确包含我想要的内容,并按照 msbuild 的要求在 Any CPU 周围使用双语音标记。在尝试构建解决方案时使用单个语音标记、无语音标记或 AnyCPU 均无效。我相信,如果我正在构建一个项目而不是解决方案,我将能够为平台使用 AnyCPU 而不是 "Any CPU"。
错误似乎是 msbuild 没有看到正确形成的平台参数,因此可能认为我在做:
msbuild solution.sln /p:Platform=Any CPU /p:Configuration:Release
它认为 CPU 是第二个 project/solution。
我尝试了一些不同的方法来尝试通过 exec 任务将包含双语音标记的参数获取到 msbuild(例如,使用 "e; 代替双语音标记),通常结果与所示相同以上。
任何人都可以建议 correct/a 工作方法将平台参数放入 arg 以执行 运行 msbuild 的 exec 任务吗?
即如何为 exec 任务定义包含双语音标记分隔元素的 arg?
提前致谢。
问题已解决。
我似乎在尝试 pre-empt/solve 一些不需要解决的问题。
从 windows 命令提示符让 MSBuild 工作我需要做的是:
msbuild solution.sln /p:Platform="Any CPU" /p:Configuration:Release
如我的问题所述。
对于 ant exec 任务参数,如果我这样做,平台参数似乎工作得很好:
<exec executable="msbuild" failonerror="true">
<arg value="solution.sln" />
<arg value="/p:Configuration=Release" />
<arg value="/p:Platform=Any CPU" />
</exec>
我正在尝试 运行 使用来自 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 正确包含我想要的内容,并按照 msbuild 的要求在 Any CPU 周围使用双语音标记。在尝试构建解决方案时使用单个语音标记、无语音标记或 AnyCPU 均无效。我相信,如果我正在构建一个项目而不是解决方案,我将能够为平台使用 AnyCPU 而不是 "Any CPU"。
错误似乎是 msbuild 没有看到正确形成的平台参数,因此可能认为我在做:
msbuild solution.sln /p:Platform=Any CPU /p:Configuration:Release
它认为 CPU 是第二个 project/solution。
我尝试了一些不同的方法来尝试通过 exec 任务将包含双语音标记的参数获取到 msbuild(例如,使用 "e; 代替双语音标记),通常结果与所示相同以上。
任何人都可以建议 correct/a 工作方法将平台参数放入 arg 以执行 运行 msbuild 的 exec 任务吗? 即如何为 exec 任务定义包含双语音标记分隔元素的 arg?
提前致谢。
问题已解决。
我似乎在尝试 pre-empt/solve 一些不需要解决的问题。
从 windows 命令提示符让 MSBuild 工作我需要做的是:
msbuild solution.sln /p:Platform="Any CPU" /p:Configuration:Release
如我的问题所述。
对于 ant exec 任务参数,如果我这样做,平台参数似乎工作得很好:
<exec executable="msbuild" failonerror="true">
<arg value="solution.sln" />
<arg value="/p:Configuration=Release" />
<arg value="/p:Platform=Any CPU" />
</exec>