在构建项目时是否可以指定目标平台(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后,我仍然遇到同样的问题。
有什么想法吗?
答案 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