从Ant执行MSBuild

从Ant执行MSBuild,ant,msbuild,Ant,Msbuild,我正在尝试使用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"' /> <ec

我正在尝试使用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>        
echo输出显示platformParameter正确地包含了我想要的内容,并按照msbuild的要求在任何CPU周围使用了双语音标记。尝试构建解决方案时,使用单个语音标记、无语音标记或任何CPU都不起作用。我相信,如果我正在构建一个项目而不是解决方案,我将能够使用AnyCPU而不是平台的“AnyCPU”

错误似乎是msbuild没有看到正确格式的平台参数,因此可能认为我正在执行以下操作:

msbuild solution.sln /p:Platform=Any CPU /p:Configuration:Release
它认为CPU是第二个项目/解决方案

我尝试了几种不同的方法,试图通过exec任务将包含双语音标记的参数发送到msbuild(例如,使用"e;代替双语音标记),结果通常与上面所示相同

是否有人可以建议正确的/a工作方法,将平台参数获取到参数中,以便执行任务运行到msbuild? i、 e.如何将包含双语音标记分隔元素的参数定义为exec任务

提前感谢。

问题已解决

看来我是在试图先发制人/解决一些不需要解决的问题

在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>


您是否尝试过删除空间,以便您的平台显示
AnyCPU
?另外尝试指定目标参数
/t:Build
@JamesReed-是,根据我的开场白,只有在您根据项目文件而不是解决方案进行构建时,才可以使用没有空间的AnyCPU——微软表示他们无意这样做addressing@Tuffwer-我不认为添加更多msbuild参数会有帮助,因为msbuild未正确接收现有参数之一。一旦我有了一个operation Platform=“Any CPU”参数,我就可以添加适当的构建选项来强制进行完整的重建,但这不是问题的焦点
<exec executable="msbuild" failonerror="true">
    <arg value="solution.sln" />
    <arg value="/p:Configuration=Release" />
    <arg value="/p:Platform=Any CPU" />
</exec>