【问题标题】:How to use MSBuild to build multiple platforms如何使用 MSBuild 构建多个平台
【发布时间】:2017-06-08 11:38:53
【问题描述】:

我正在使用带有 MSBuild 任务的 Visual Studio 在线构建。我目前为我的任务提供了以下 MSBuild 参数:

/p:Configuration=Release;AppxBundle=Always;AppxBundlePlatforms="x86|x64|ARM";AppxPackageDir="$(Build.BinariesDirectory)\AppxPackages\\";UapAppxPackageBuildMode=StoreUpload

这会在x86x64ARM 中创建我的应用程序。它在x86 中创建库的发布版本,但在x64ARM 中创建我的库的调试版本。

当我的 .appxupload 包创建时,它无法通过 Windows 认证测试,因为我的库是在调试中构建的。

如何为所有 3 种配置构建 MSBuild。我的猜测是因为我没有提供/platform 配置。如何为 3 个平台提供此配置?

我尝试过platform="x86|x64|ARM",但它返回错误

【问题讨论】:

  • 如果您还可以列出您正在使用的 MSBuild 版本以及您所针对的 UWP SDK 版本,将会很有帮助。
  • 使用 Vs2017 MsBuild,面向 Windows 10 周年纪念版
  • 您能分享构建日志和您从 WACK 看到的错误吗? (您可以将详细信息发送给 ms dot com 的 rmpablos)
  • @rido 现在似乎正在正确地构建版本。我认为这是因为我为该任务勾选了clean。似乎在发布中产生x86,在调试中产生另外两个。很奇怪

标签: msbuild uwp azure-devops windows-store windows-dev-center


【解决方案1】:

对于标准项目文件,无法在单个命令中执行此操作。使用多个命令为所需的每个平台/配置组合构建项目,或者使用对您执行相同操作的“主”构建文件,例如:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="FullRebuild">
  <Target>
    <ItemGroup>
      <Configurations Include="Debug;Release"/>
      <Platforms Include="x86;x64;ARM"/>
      <ConfigAndPlatform Include="@(Configurations)">
        <Platform>%(Platforms.Identity)</Platform>
      </ConfigAndPlatform>
    </ItemGroup>
    <MSBuild Projects="myproject.sln" Targets="Build"
             Properties="Configuration=%(ConfigAndPlatform.Identity);Platform=%(ConfigAndPlatform.Platform)"/>
  </Target>
</Project>

【讨论】:

  • 所以要为自动构建执行此操作,我可能需要 3 个具有单独配置的 MSbuild 任务,然后是 1 个创建我的 StoreUpload 的任务?这本质上是 Visual Studio 在“为商店创建包”时必须做的吗?
  • 1) 是的,或者如答案所示,一项为您调用 MsBuild 3 次的任务 2) 抱歉,我不知道,因为我没有这方面的经验
  • UWP 目标通过单个 MSBuild 命令构建三个平台
  • @rido 是的,我不熟悉它;语法真的只是 /p:platform="a|b|c" 吗?
猜你喜欢
  • 2015-05-03
  • 1970-01-01
  • 2011-07-27
  • 2015-12-04
  • 1970-01-01
  • 1970-01-01
  • 2014-10-11
  • 2010-12-09
  • 2019-01-02
相关资源
最近更新 更多