MSBuild AppXBundle for x86和x64

时间:2016-10-11 11:40:32

标签: msbuild windows-applications appx

我想为包含 x86 AND x64 appx的Windows 8.1 JavaScript应用构建*。 appxbundle

这在Visual Studio 2013上运行正常。我右键单击该项目并选择 Store - > 创建应用程序包,然后选择这两种体系结构。

但是我无法让它在MSBuild上运行。我的msbuild语句如下所示:

msbuild MyProj.Win81.jsproj /property:Configuration=Release;Platform=x64;AppxBundle=Always /target:Clean,Rebuild,Publish

我的 MyProj.Win81.jsproj 看起来像这样(缩短了一点):

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ProjectConfiguration Include="Debug|AnyCPU">
  <Configuration>Debug</Configuration>
  <Platform>AnyCPU</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM">
  <Configuration>Debug</Configuration>
  <Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
  <Configuration>Debug</Configuration>
  <Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x86">
  <Configuration>Debug</Configuration>
  <Platform>x86</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|AnyCPU">
  <Configuration>Release</Configuration>
  <Platform>AnyCPU</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM">
  <Configuration>Release</Configuration>
  <Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
  <Configuration>Release</Configuration>
  <Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x86">
  <Configuration>Release</Configuration>
  <Platform>x86</Platform>
</ProjectConfiguration>
</ItemGroup>
  <Import Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" />
<PropertyGroup Condition="'$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '12.0'">
    <VisualStudioVersion>12.0</VisualStudioVersion>
  </PropertyGroup>
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\$(WMSJSProjectDirectory)\Microsoft.VisualStudio.$(WMSJSProject).Default.props" />
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\$(WMSJSProjectDirectory)\Microsoft.VisualStudio.$(WMSJSProject).props" />
  <PropertyGroup>
    <TargetPlatformIdentifier>Windows</TargetPlatformIdentifier>
    <TargetPlatformVersion>8.1</TargetPlatformVersion>
    <RequiredPlatformVersion>8.1</RequiredPlatformVersion>
    <MinimumVisualStudioVersion>12.0</MinimumVisualStudioVersion>
    <DefaultLanguage>en-US</DefaultLanguage>
    <AppxAutoIncrementPackageRevision>False</AppxAutoIncrementPackageRevision>
    <AppxBundle>Always</AppxBundle>
    <AppxBundlePlatforms>x86|x64</AppxBundlePlatforms>
  </PropertyGroup>

  <ItemGroup>
    <AppxManifest Include="package.win81.store.appxmanifest">
      <SubType>Designer</SubType>
    </AppxManifest>
  </ItemGroup>
  <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\$(WMSJSProjectDirectory)\Microsoft.VisualStudio.$(WMSJSProject).targets" />
</Project>

MSBuild将始终生成仅包含x64架构的appxbundle。这可能是因为我明确设置了Platform = x64,尽管AppxBundlePlatforms定义了两者。如果我省略了Platform参数,我会遇到错误:

error APPX3104: You cannot create an app bundle when building for platform 'AnyCPU' which is not included in the list of platforms selected for producting app bundle. Set platform to a one of following values: x86;x64.

我错过了什么?

// 编辑:这里是VS2013 appxbundle创建的截图和jsproj文件的更新项目配置 enter image description here

0 个答案:

没有答案