【问题标题】:UWP with Desktop Bridge package build automation with MSbuildUWP 与桌面桥包构建自动化与 MSbuild
【发布时间】:2018-08-17 09:19:58
【问题描述】:

有谁知道如何使用 MSbuild 工具通过桌面桥(桌面扩展)包构建(.appxupload/.appxbundle)自动化 UWP?

我已经有了following blog 上的设置。

对于简单的 UWP 应用(没有桌面扩展),我可以使用以下命令:

msbuild UWP.sln /p:Configuration=Release;AppxBundle=Always;AppxBundlePlatforms=”x86|x64|ARM”;UapAppxPackageBuildMode=StoreUpload

但是,当我在 Package.wapproj 上尝试时,我遇到了一堆错误。 例如,虽然 Package 项目有证书,但 UWP 项目也需要一个证书(为什么?),当我解决这个问题时,msbuild 需要来自 bin/Debug 的 build.appxrecipe,尽管我正在构建 Release 等。

【问题讨论】:

  • 请贴出错误信息。
  • @XavierXie-MSFT 我和 OP 有同样的问题,帮助更快地解决这个问题。我可以在仅使用 UWP 和打包项目的新解决方案上重现此问题,然后通过 "msbuild /p:Configuration=Release /p:Platform=x86" 构建打包项目 --- 错误:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\DesktopBridge\Microsoft.DesktopBridge.targets(350,5): error : Could not find a recipe file for the referenced UWP application at '[..]\PackagingTest\PackagingTest.UWP\bin\Debug\PackagingTest.UWP. build.appxrecipe'. Please build the project.

标签: uwp msbuild build-automation


【解决方案1】:

这里的经验相同,但我设法通过分别构建 x86 和 x64 项目来绕过“找不到配方文件”错误,然后运行 ​​msbuild 命令将两者打包。这是我的笔记:

  1. 因为我的方案有一个Desktop Extension项目,几个c#项目,还有几个测试项目,所以我要在项目文件中一一指定<AppxBundle>Always</AppxBundle>或者<AppxBundle>Never</AppxBundle>

  2. 清理 x86 和 x64。

  3. 首先构建 x86。 msbuild .\MyApp.sln /p:Configuration=Release /p:Platform=x86

  4. 构建 x64。 msbuild .\MyApp.sln /p:Configuration=Release /p:Platform=x64

  5. 在命令行中运行这个 msbuild 命令:

    msbuild .\MyApp.sln /p:Configuration=Debug /p:AppxBundlePlatforms="x86|x64" /p:AppxPackageDir="C:\Develop\MyApp\AppPackages\" /p:UapAppxPackageBuildMode=StoreUpload

  6. 注意,我必须在命令中添加AppxPackageDir,否则它只会捆绑x64,而不是x86。我还不知道为什么。

  7. 然后您将看到所有捆绑文件夹都在 AppxPackageDir 下创建,包括 x64 和 x86。将在文件夹之外创建一个上传包。

构建发布版本需要很长时间,但它可以在命令行中运行。自动化,我们开始!

【讨论】:

    【解决方案2】:

    为了使用 VS2017 使用 msbuild 构建,对我来说成功的命令是:

    \path\to\msbuild.exe UWP.sln ^
        /m /p:platform=x86 /p:platform=x64 /p:platform=arm ^
        /p:Configuration=Release ^
        /p:AppxBundle=Always ^
        /p:AppxBundlePlatforms="x64|x86|ARM" ^
        /p:UapAppxPackageBuildMode=StoreUpload ^
        /Consoleloggerparameters:verbosity=minimal
    

    但是为了用 VS2019 构建它,在经历了很大的压力、流血和诅咒之后,这个方法奏效了:

    首先,将Package.wapproj的内容改为有

    <AppxBundlePlatforms>x86|x64|arm</AppxBundlePlatforms>
    <UapAppxPackageBuildMode>StoreAndSideload</UapAppxPackageBuildMode>
    

    然后只运行一个 msbuild 命令:

    \path\to\msbuild.exe UWP.sln /m ^
        /p:Configuration=Release ^
        /p:platform=x64 /p:platform=x86 /p:platform=arm ^
        /Consoleloggerparameters:verbosity=minimal ^
        /Fileloggerparameters:verbosity=quiet ^
        -nodeReuse:false
    

    这构建了所有平台和包,用于一次性加载和上传。

    我不得不让文件记录器安静下来,因为对于多处理器构建,多个ilc.exe 进程存在竞争条件,其中表示ilclog.csv 无法打开,因为它被另一个进程使用。白痴。

    我尝试在没有/m 开关的情况下单独构建每个平台,然后构建包,但每次我遇到配方错误时都没有任何效果。 他们有一个配方错误的开放错误 - https://github.com/microsoft/msbuild/issues/4930

    上面的解决方案终于为vs2019做到了。

    感谢 Microsoft 让我们的每个新版本都变得轻松,并让文档变得如此有用和足智多谋。

    【讨论】:

      【解决方案3】:

      这是一个已知问题。相关团队一直在调查。作为一些解决方法,最明显的是避免多平台构建。

      请记住,Centennial 不适用于 ARM,因此包含该平台是没有意义的。同样为 X86 和 X64 构建以生成捆绑软件在某种程度上是有问题的。

      您可以尝试只为一个平台 X86 或 X64 构建并设置 AppxBundle=Never,最后构建解决方案而不是 wapproj。

      【讨论】:

      • 这不是一个真正可接受的解决方案,因为商店上传返回以下错误:A previous submission for this app was released with a Windows 10 appxbundle. Subsequent submissions must continue to contain a Windows 10 appxbundle.
      • 可以删除之前提交的吗?其他选项是创建一个航班,这将是一个新的提交,然后推广它。请记住,即使您只针对一个平台,您也可以生成 appxbundle
      • 只为一个平台构建解决方案(而不是 wapproj)是可行的,但因此我们不得不放弃 x64 支持。请在 MS 端解决此问题后尽快跟进此帖子,以便我们可以再次支持这两种架构。
      【解决方案4】:

      解决方法是选择所有项目来构建,但是手动选择打包项目作为主项目来构建:

      msbuild uwp_build_test.sln /t:WapProjTemplate1:Rebuild /p:Configuration=Release /p:UapAppxPackageBuildMode=StoreAndSideload /p:AppxBundlePlatforms=“x86|x64” /p:AppxBundle=Always /p:AppxSymbolPackageEnabled=True /p: AppxPackageSigningEnabled=True

      【讨论】:

        猜你喜欢
        • 2018-07-20
        • 2010-09-21
        • 2018-04-26
        • 1970-01-01
        • 1970-01-01
        • 2016-02-21
        • 2018-03-04
        • 2019-11-17
        • 2019-09-09
        相关资源
        最近更新 更多