Windows アプリ SDKを使用したコンソール アプリ

アプリのライフサイクル管理、リッチ アクティブ化、プッシュ通知などのWindows アプリ SDK機能を使用するコンソール アプリを作成できます。 UWP コンソール アプリ (特殊なテンプレートと C++/WinRT が必要) とは異なり、デスクトップ コンソール アプリでは標準の.NETまたは C++ プロジェクトの種類が使用されます。

Windows アプリ SDKを使用してコンソール アプリを作成する

手順 1: .NET コンソール プロジェクトを作成する

標準の .NET コンソール アプリ テンプレートを使用します。

dotnet new console -n MyConsoleApp
cd MyConsoleApp

手順 2: Windows アプリ SDK NuGet パッケージを追加する

dotnet add package Microsoft.WindowsAppSDK

手順 3: Windows アプリ SDK API を使用する

using Microsoft.Windows.AppLifecycle;

class Program
{
    static async Task Main(string[] args)
    {
        Console.WriteLine("Console app with Windows App SDK");

        // Check activation kind
        var activatedArgs = AppInstance.GetCurrent().GetActivatedEventArgs();
        Console.WriteLine($"Activation kind: {activatedArgs.Kind}");

        // Use single-instance pattern
        var instance = AppInstance.FindOrRegisterForKey("my-console-app");
        if (!instance.IsCurrent)
        {
            Console.WriteLine("Another instance is running. Redirecting...");
            await instance.RedirectActivationToAsync(activatedArgs);
            return;
        }

        // Your app logic here
        Console.WriteLine("Press Enter to exit.");
        Console.ReadLine();
    }
}

コンソール アプリのパッケージ ID

一部のWindows アプリ SDK機能には MSIX パッケージ ID が必要です。 コンソール アプリ パッケージ ID は、次の 2 つの方法で指定できます。

  • MSIX としてパッケージ化する — Windows アプリケーション パッケージ化プロジェクトを作成し、コンソール アプリへの参照を追加します。
  • 外部 ID を使用 する - 完全な MSIX パッケージを使用せずに、ID のスパース パッケージを登録します。

Note

プッシュ通知、バックグラウンド タスク、アプリ サービスなどの機能には、パッケージ ID が必要です。 基本的なライフサイクルとアクティブ化 API は、パッケージ化なしで機能します。

UWP コンソール アプリとの違い

特徴 UWP コンソール アプリ デスクトップ コンソール アプリ
言語サポート C++/WinRT と C++/CX のみ C#、C++、および任意の.NET言語
プロジェクト テンプレート 特殊な UWP コンソール テンプレート (VS 2017/2019) Standard .NET コンソールまたは Win32
マニフェストの要件 desktop4:Subsystem="console" 必須ではない
アクティベーション AppExecutionAlias マニフェスト内 標準のコマンド ラインまたはリッチ アクティブ化
SDK の統合 WinRT API に限定 Windows アプリ SDK への完全なアクセス

Important

UWP コンソール アプリには、アクティブに保守されなくなった特殊なVisual Studio テンプレートが必要です。 新しいコンソール アプリの場合は、Windows アプリ SDK NuGet パッケージで標準の .NET コンソール プロジェクトを使用します。

一般的なシナリオ

Windows統合を使用したコマンド ライン ツール

Windows機能と統合する CLI ツールを構築します。

using Microsoft.Windows.AppNotifications;

// Send a notification from a console app (requires package identity)
var builder = new AppNotificationBuilder()
    .AddText("Build complete")
    .AddText("Your project built successfully.");

AppNotificationManager.Default.Show(builder.BuildNotification());

バックグラウンド処理

コンソール アプリは、バックグラウンド処理タスクに適しています。

  • データのインポート/エクスポート ユーティリティ
  • ファイル ウォッチャーとプロセッサ
  • スケジュールされたタスク実行可能ファイル
  • 開発者ツールと自動化スクリプト