使用 MSBuild 构建 Windows Store 应用程序时如何跳过打包步骤?

How do I skip the packaging step when building a Windows Store app using MSBuild?

我目前正在尝试使用 AppVeyor 为我的 Windows Store 应用程序设置持续集成。我面临的问题是构建失败,因为缺少 Package.StoreAssociation.xml 文件。这是详细的错误信息 (error APPX0002):

(_ValidateAppxPackage target) -> 
  C:\Program Files (x86)\Microsoft Visual Studio17\Community\MSBuild\Microsoft\VisualStudio\v15.0\AppxPackage\Microsoft.AppXPackage.Targets(2625,5): error APPX0002: Task 'ValidateAppxPackage' failed. Could not find file 'C:\projects\...\<PROJECTNAME>\Package.StoreAssociation.xml'. [C:\projects\...\<PROJECTNAME>\<PROJECTNAME>.csproj]
C:\Program Files (x86)\Microsoft Visual Studio17\Community\MSBuild\Microsoft\VisualStudio\v15.0\AppxPackage\Microsoft.AppXPackage.Targets(2625,5): error APPX0002:  [C:\projects\...\<PROJECTNAME>\<PROJECTNAME>.csproj]

在我的研究过程中,我发现了这个 site,它说这个错误是由于创建应用程序包的步骤而发生的,并且在使用 Visual Studio 时被跳过了,我可以批准,因为它在没有 Package.StoreAssociation.xml 文件的机器上工作。

有没有办法在分别使用 MSBuild 和 AppVeyor 时跳过这一步?


所以我发现 this 网站建议将参数 AppxPackageSigningEnabled 设置为 false。不幸的是,这没有帮助。我当前使用的命令如下:

msbuild "C:\projects\...\<PROJECTNAME>.sln" /t:Rebuild /p:Configuration=Debug /p:Platform=x86 /p:AppxPackageSigningEnabled=false /p:AppxBundle=Never /verbosity:normal /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll"

这个问题的解决方法其实很简单,但是我花了好几个小时才弄明白,这并没有让我感到骄傲。现在我想分享我的解决方案:

msbuild /t:Build /p:Configuration=Release /p:Platform=x86 /p:AppxPackage=false /verbosity:minimal

使用此命令构建工作正常。这里重要的参数是/p:AppxPackage=false,它将跳过AppxPackage的创建。这正是我想要的,因为 StoreKey.pfx 文件丢失导致无法签名,而且我无法提供密钥,因为应用程序本身是开源的。