msbuildbuild-processappx

msbuild: build as to a appxbundle (AppxBundle=Always not working)


I have a shared Windows8.1 project with a Phone and Desktop project in it. I defined different configurations to build x86/x64 for desktop and ARM for phone.

msbuild works fine without error, but there is no final *.appxbundle file on the output folder (or anywhere else) although i set the parameter AppxBundle=Always.

my command looks like this:

msbuild myApp.sln /p:OutputPath=%OUTPATH%;Configuration=Phone;Platform=ARM;AppxBundle=Always;AppxBundlePlatforms=ARM /t:Rebuild,Publish

The output is:

OUTPATH
├── ForBundle
│   └── AppxManifest.xml
├── AppxManifest.xml
├── App.WindowsPhone.build.appxrecipe
├── App.WindowsPhone_3.2.1_ARM.appx
├── App.WindowsPhone_3.2.1_scale-100.appx
├── App.WindowsPhone_3.2.1_scale-140.appx
├── App.WindowsPhone_3.2.1_scale-180.appx
├── resources.pri
└── SomeDependency.winmd

I tried to pack this folder with makeappx.exe bundle but this didn't work and I realized the folder looks a bit different to what is into a appxbundle.

Creating a appxbundle via VS GUI is no problem, but I would like to automate that step!

Thanks in advance!


Solution

  • There's a hint comment in Microsoft.AppXPackage.Targets:

    When building on the command line or in TFS (determined by looking at the $(BuildingInsideVisualStudio) property), if build is invoked on an app package-producing project, the package for the project will be produced as part of building the project without specifying any additional flags or targets. This is control by an MSBuild property named GenerateAppxPackageOnBuild which is set to true by default.

    If $(BuildingInsideVisualStudio) = false and $(GenerateAppxPackageOnBuild) = true, then build will also produce a package. true