MSBuild:指定子构建平台时出现问题

3

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

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

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

您可能已经注意到,我将在Properties属性中看到的一切都用上了,希望这样可以生效。您会发现,对于Architecture属性,我明确将其设置为x86。$(Platform)也被设置为x86。我尝试过多种排列组合,但均未成功。
不幸的是,无论将什么内容放入这些属性中,我的类库始终是x86,但可执行文件却是x64。
我认为问题可能是项目文件中指定的构建属性导致MSBuild忽略了我从MSBuild传递的属性,但是即使我将它们更改为x86,问题仍然存在。
有任何想法吗?
1个回答

3
AgentProjectFiles 项目的声明中,您正在定义 Properties 元数据。所以它看起来像这样:
<ItemGroup>
    <AgentProjectFiles Include="something.proj">
        <Properties>SOME VALUES HERE</Properties>
    </AgentProjectFiles>
</ItemGroup>

如果您已经定义了这些属性,那么传递到MSBuild 任务的 Properties 属性中的属性将被忽略。我在博客中写过关于此的MSBuild:属性和AdditionalProperties已知元数据
Sayed Ibrahim Hashimi
我的书:深入了解 Microsoft Build 引擎:使用 MSBuild 和 Team Foundation Build

谢谢!!!(不好意思,用了大写字母,但是我已经为这个问题撞了几个小时的墙了。)我将我的ItemGroup更改为像您上面定义的属性,并且我的程序集现在针对正确的平台正在创建。 - tardomatic
我并不真的相信这是真相。谢谢,Sayed。 - Pete Montgomery

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接