【问题标题】:MSBuild: Problems specifying platform for child buildsMSBuild:为子构建指定平台时出现问题
【发布时间】:2009-07-16 11:45:19
【问题描述】:

构建项目时是否可以指定目标平台(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 后,我仍然遇到同样的问题。

有什么想法吗?

【问题讨论】:

    标签: msbuild


    【解决方案1】:

    您在 AgentProjectFiles 项的声明中定义了 Properties 元数据。它看起来像:

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

    如果您已定义,则传递到 MSBuild task 的 Properties 属性的属性将被忽略。我已经在博客上写过这个MSBuild: Properties and AdditionalProperties Known Metadata

    赛义德·易卜拉欣·哈希米

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

    【讨论】:

    • 谢谢!!! (请原谅帽子,但我已经为此撞墙了几个小时。)我更改了我的 ItemGroup 以定义上面的属性,现在正在为正确的平台创建我的程序集。
    • 我真的不相信这是事实。谢谢赛义德。
    猜你喜欢
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    • 2010-10-18
    • 2022-10-18
    • 1970-01-01
    相关资源
    最近更新 更多