redwarrior’s diary

C#, ASP.NET, WEB, G*などの雑多な情報

TFS 2018 で MSIXの発行を行う

Visual Studio 2019からのMSIX形式のアプリパッケージの作成は、他サイトを参考にして出来るようになったので、TFS上でビルドする方法を調査しました。

一応、今回は以下の状態で始めました。

  • .NET Core 3.1の32bitのWPFアプリケーション
  • Visual Studio 2019の画面操作で、アプリパッケージの作成が一度成功している
  • 配布方法は、サイドローディング
  • コード署名証明書は、証明書ストアから選択している
  • アプリケーション バンドルの生成は、常に行う

まずは、コマンドラインでビルドをしてみましたが、さっそく以下のエラーが発生。

error NETSDK1047:
資産ファイル 'C:\Users\(省略)\obj\project.assets.json'  に '.NETCoreApp,Version=v3.1/win-x86' のターゲットがありません。
復元が実行されたこと、および 'netcoreapp3.1' がプロジェクト の TargetFrameworks に含まれていることを確認してください。
プロジェクトの RuntimeIdentifiers に 'win-x86' を組み込む必要が生じる可能性もあります。 [C:\Users\(省略).csproj]

MSIXパッケージでは、自己完結型デプロイメントをするため、RuntimeIdentifiersの設定が必要らしいです。

techcommunity.microsoft.com

csprojファイルに以下を追加します。

<RuntimeIdentifiers>win-x86</RuntimeIdentifiers>

以下のコマンドで、コマンドラインからの作成が出来ました。(Developer PowerShell for VS 2019で実行しました)

> msbuild (プロジェクト名).wapproj /p:Configuration=Release /p:AppxBundlePlatforms=x86

プロパティなしで実行することも可能で、その場合はDebug構成のx86プラットフォームが選択されていました。指定しなかったプロパティは、wapprojファイルやappxmanifestファイルの値が使用されるようです。パッケージの作成とコード署名証明書による署名も行われていました。

TFSでのビルド、発行

コマンドラインからのビルドが出来たので、いよいよTFSでのビルドに入ります。

このサイトが参考になりました。対象がTFSではなく、後継のAzure DevOps(Azure Pipelines)なので、設定ファイルがYAMLで書かれているため、読むのがちょっと大変でした。

docs.microsoft.com

この記事は、MSDN Magagine 2019 の記事の一部ですが、PDF版もダウンロード可能です。PDF版はWeb版で省略された図や画面も含まれるので、PDF版を見た方が理解しやすいです。

docs.microsoft.com

コマンドラインでのビルドが出来ているので、それをタスクに置き換えます。

ただし、TFS 2018 だと「Visual Studioのビルド」タスクが、VS 2017までしか対応していないため、MSBuildタスクを使用し、ビルドを実行するPCのMSBuild へのパスを設定する必要があったので、以下のように設定しました。

MSBuildタスク
プロジェクト
**/*.wapproj

MSBuild へのパス
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\MSBuild.exe

プラットフォーム
x86

構成
Release

MSBuild 引数
/p:AppxPackageDir=$(build.artifactstagingdirectory)\AppxPackages /p:AppxBundlePlatforms=x86

最後に、AppxPackagesフォルダを、配布用フォルダにコピーします。発行場所は「TFS」ではなく「A file share」を指定しました。ここはClickOnceの発行と同じですね。

成果物の公開タスク
発行するためのパス
$(build.artifactstagingdirectory)\AppxPackages

成果物名
AppxPackagesの中身が格納されるフォルダ名

ファイル共有パス
成果物が格納されるフォルダの親フォルダ

動作環境

  • TFS 2018 Update 3
  • .NET Core 3.1
  • ビルドマシン:Visual Studio 2019 Professional

以上