MSBuild:指定子构建平台的问题

时间:2009-07-16 11:45:20

标签: msbuild

在构建项目时是否可以指定目标平台(x64,x86)?

我有一个构建任务,如下所示:

<MSBuild Projects="%(AgentProjectFiles.FullPath)" Properties="Architecture=x86;Configuration=$(Configuration);Optimize=$(Optimize);Platform=$(Platform);OutputPath=$(OutputDirectory)\Agent\;ReferencePath=$(ReferencePath);DebugSymbols=$(DebugSymbols);DebugType=none;" />

正如你可能会说的那样,我已经把我在网上看到的所有可能的东西扔到了属性属性中,希望它能运作。您会注意到,对于Architecture属性,我已将其设置为x86。 $(平台)也设置为x86。我尝试了一些排列,没有成功。

不幸的是,似乎无论放入这些属性的是什么,我的类库都是x86,但我的可执行文件是x64。

我想也许问题可能是项目文件中指定的构建属性导致MSBuild忽略我从MSBuild传递的那些,但是在将它们更改为x86后,我仍然遇到同样的问题。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

AgentProjectFiles 项的声明中,您要定义属性元数据。它看起来像是:

<ItemGroup>
    <AgentProjectFiles Include="something.proj">
        <Properties>SOME VALUES HERE</Properties>
    </AgentProjectFiles>
</ItemGroup>

如果已定义,则忽略传递到MSBuild task的Properties属性的属性。我对此MSBuild: Properties and AdditionalProperties Known Metadata感到愤怒。

Sayed Ibrahim Hashimi

我的书:Inside the Microsoft Build Engine : Using MSBuild and Team Foundation Build