I am building an UWP app and I want to have generated package to be named with the build number in order to distinguish the builds. So far, I have this configuration in the csproj file:
<Target Name="BeforeBuild">
<Message Text="Updating AssemblyInfo to Version $(VersionNumber)"></Message>
<Message Text="Writing to AssemblyInfo files in $(SolutionRoot)"></Message>
<AssemblyInfo CodeLanguage="CS"
AssemblyCompany="Company"
AssemblyProduct="Product"
AssemblyCopyright="Copyright © Company 2011"
ComVisible="true"
AssemblyVersion="$(BUILD_NUMBER)"
AssemblyFileVersion="$(BUILD_NUMBER)" />
</Target>
All good, I can run the msbuild with the /p:BUILD_NUMBER=1.2.3.4
argument, but this is only reflecting in AssemblyInfo.cs
file.
The .appx file will be named as MyApplication.Core_1.0.0.0_x86_Test.appx
and not MyApplication.Core_1.2.3.4_x86_Test.appx
How can I use the BUILD_NUMBER information to be reflected in the .appx file name?
The version number in .appx file name is not set by AssemblyInfo
. This version number is called Package version number which is set as a value in the Version attribute of the Package/Identity element in the app manifest like:
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" IgnorableNamespaces="uap mp">
<Identity Name="e12578ad-9b81-44bb-8651-0b58e44e71b8" Publisher="CN=Jay Zuo" Version="1.2.3.0" />
...
</Package>
Once you changed the Version attribute and then run MSBuild, you will get the .appx file named like MyUWPApp_1.2.3.0_x86.appx
.
Besides this, we usually change the package version number while creating an app package. This can be done with Microsoft Visual Studio wizard like following:
(source: s-msft.com)