注
このガイドは、ほとんどの.NET projectの種類で機能します。 この手順は、コンソールと UI ベースのプロジェクト (WPF など) の両方でテストされています。
このガイドでは、winapp CLI と.NET アプリケーションを使用してパッケージ ID でデバッグし、アプリケーションを MSIX としてパッケージ化する方法について説明します。
パッケージ ID は、Windows app モデルの主要な概念です。 これにより、アプリケーションで特定の Windows API (通知、セキュリティ、AI API など) をaccessしたり、クリーン インストール/アンインストール エクスペリエンスを使用したりできます。
[前提条件]
.NET SDK: .NET SDK をインストールします。
winget install Microsoft.DotNet.SDK.10 --source wingetwinapp CLI: winget を使用して
winappツールをインストールします。winget install Microsoft.winappcli --source winget
1. 新しい.NET アプリを作成する
まず、単純な.NETコンソール アプリケーションを作成します。
dotnet new console -n dotnet-app
cd dotnet-app
これを実行して、すべてが動作していることを確認します。
dotnet run
2. ID を確認するようにコードを更新する
最初に、特定の Windows SDK バージョンを対象として、project ファイルを更新します。
dotnet-app.csprojを開き、TargetFrameworkを変更します。
<TargetFramework>net10.0-windows10.0.26100.0</TargetFramework>
次に、 Program.csの内容を置き換えます。
using Windows.ApplicationModel;
try
{
var package = Package.Current;
var familyName = package.Id.FamilyName;
Console.WriteLine($"Package Family Name: {familyName}");
}
catch (InvalidOperationException)
{
Console.WriteLine("Not packaged");
}
3. ID なしで実行する
dotnet run
"パッケージ化されていません" と表示されます。
4. winapp CLI を使用してprojectを初期化する
winapp init コマンドは、.csproj ファイルを自動的に検出し、.NET固有のセットアップを実行します。
winapp init
プロンプトが表示されたら、次を実行します。
- パッケージ名: Enter キーを押して既定値をそのまま使用します
- Publisher名: Enter キーを押して既定値をそのまま使用するか、名前を入力します
- 説明: Enter キーを押して既定値をそのまま使用するか、説明を入力します
- バージョン: Enter キーを押して 1.0.0.0 を受け入れる
- エントリ ポイント: Enter キーを押して既定値 (dotnet-app.exe) をそのまま使用します。
- Windows App SDKセットアップ: [安定]、[プレビュー]、または [試験段階] を選択します
このコマンドは、次の操作を行います。
-
TargetFrameworkの.csprojをサポートされている Windows TFM に更新します (必要な場合) - NuGet パッケージ参照の
Microsoft.WindowsAppSDKとMicrosoft.Windows.SDK.BuildToolsを追加します - アプリ ID の
appxmanifest.xmlフォルダーとAssetsフォルダーを作成します
注
ネイティブ/C++ プロジェクトとは異なり、.NET フローは notwinapp.yaml ファイルを作成します。 NuGet パッケージは、 .csprojを介して直接管理されます。
dotnet restoreを使用して、複製後にパッケージを復元します。
5. ID を使用したデバッグ
実行可能ファイルをビルドします。
dotnet build -c Debugデバッグ ID を適用します。
winapp create-debug-identity .\bin\Debug\net10.0-windows10.0.26100.0\dotnet-app.exe実行可能ファイルを実行します (再構築する可能性があるため、
dotnet runは使用しないでください)。.\bin\Debug\net10.0-windows10.0.26100.0\dotnet-app.exe
次のような結果が表示されます。
Package Family Name: dotnet-app_12345abcde
デバッグ ID の自動化 (省略可能)
このターゲットを .csproj ファイルに追加します。
<Target Name="ApplyDebugIdentity" AfterTargets="Build" Condition="'$(Configuration)' == 'Debug'">
<Exec Command="winapp create-debug-identity "$(TargetDir)$(TargetName).exe""
WorkingDirectory="$(ProjectDir)"
IgnoreExitCode="false" />
</Target>
6. Windows App SDKの使用
winapp initを実行した場合、Microsoft.WindowsAppSDKは NuGet パッケージ参照として既に追加されています。 Windows App ランタイム API を使用するように Program.cs を更新します。
using Windows.ApplicationModel;
class Program
{
static void Main(string[] args)
{
try
{
var package = Package.Current;
var familyName = package.Id.FamilyName;
Console.WriteLine($"Package Family Name: {familyName}");
var runtimeVersion = Microsoft.Windows.ApplicationModel.WindowsAppRuntime.RuntimeInfo.AsString;
Console.WriteLine($"Windows App Runtime Version: {runtimeVersion}");
}
catch (InvalidOperationException)
{
Console.WriteLine("Not packaged");
}
}
}
7. MSIX を使用したパッケージ化
リリース用のビルド:
dotnet build -c Release開発証明書を生成します。
winapp cert generate --if-exists skipパッケージと署名:
winapp pack .\bin\Release\net10.0-windows10.0.26100.0 --manifest .\appxmanifest.xml --cert .\devcert.pfx証明書をインストールします (管理者として実行)。
winapp cert install .\devcert.pfx生成された ファイルをダブルクリックして
.msixします。
ヒント
- Microsoft Store は MSIX に署名します。提出前に署名する必要はありません。
- アーキテクチャごとに個別の MSIX パッケージ (
dotnet build -c Release -r win-x64またはdotnet build -c Release -r win-arm64) が必要になる場合があります。
MSIX パッケージの自動化 (省略可能)
このターゲットを .csprojに追加します。
<Target Name="PackageMsix" AfterTargets="Build" Condition="'$(Configuration)' == 'Release'">
<Exec Command="winapp pack "$(TargetDir.TrimEnd('\'))" --cert "$(ProjectDir)devcert.pfx""
WorkingDirectory="$(ProjectDir)"
IgnoreExitCode="false" />
</Target>
関連トピック
Windows developer