アプリのライフサイクル管理、リッチ アクティブ化、プッシュ通知などの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());
バックグラウンド処理
コンソール アプリは、バックグラウンド処理タスクに適しています。
- データのインポート/エクスポート ユーティリティ
- ファイル ウォッチャーとプロセッサ
- スケジュールされたタスク実行可能ファイル
- 開発者ツールと自動化スクリプト
関連するコンテンツ
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
Windows developer