2017-03-22 17 views
0

MSBuild.TargetにPackage.appxmanifestバージョンが必要です。私は何 は次のとおりです。MSBuildでUWP Package.appxmanifestバージョンを取得

<Target Name="Zip"> 
<ItemGroup> 
    <BinDirectoryFiles Include="...\AppPackages\My-App_$(Version)\**\*.*" /> 
</ItemGroup> 
<Zip Files="@(BinDirectoryFiles)" WorkingDirectory="...\AppPackages\My-App_$(Version)" 
ZipFileName="...\Zip\My-App_$(Version).zip" /> 

(私はパスと名前を短く持っている)

だからこれは私がHockeyAppにアップロードするアプリパッケージを圧縮対象です。 (完全なファイル名をバージョン番号でハードコードすると、zipターゲットが動作しています。)しかし、適切なapppackageとzipファイルの正しい名前を取得するには、Package.appxmanifestで設定されているバージョンが必要です。しかし、私はMSBuild.Targetの.csprojファイルでそれを取得する方法を知らない。

答えて

0

Package.appxmanifestはxmlファイルなので、カスタムMSBuildタスクを作成して読み込むか、MSBuild Extension Packを使用して値を取得することができます。

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="12.0" 
     DefaultTargets="Build" 
     xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 

<Target Name="Build"> 
    <GetPackageVersion Filename="Package.appxmanifest"> 
    <Output PropertyName="PackageVersion" TaskParameter="PackageVersion" /> 
    </GetPackageVersion> 

    <Message Text="PackageVersion: $(PackageVersion)" /> 
</Target> 

<UsingTask TaskName="GetPackageVersion" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll"> 
    <ParameterGroup> 
    <FileName ParameterType="System.String" Required="true" /> 
    <PackageVersion ParameterType="System.String" Output="true" /> 
    </ParameterGroup> 
    <Task> 
    <Reference Include="System.Xml" /> 
    <Reference Include="System.Xml.Linq" /> 
    <Using Namespace="System.IO" /> 
    <Using Namespace="System.Xml.Linq" /> 
    <Code Type="Fragment" Language="cs"><![CDATA[ 
     var doc = XDocument.Load(FileName); 
     var defaultNamespace = doc.Root.GetDefaultNamespace(); 
     PackageVersion = doc.Root.Element(defaultNamespace.GetName("Identity")).Attribute("Version").Value; 
]]></Code> 
    </Task> 
</UsingTask> 

</Project> 

次のMSBuildファイルは現在のフォルダと出力からバージョンをPackage.appxmanifestを読み込みますカスタムGetPackageVersionが含まれています

関連する問題