可以创建使用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();
}
}
控制台应用的包标识
某些Windows 应用 SDK功能需要 MSIX 包标识。 可以通过两种方式为控制台应用包标识:
- 打包为 MSIX — 创建Windows应用程序打包Project并将控制台应用添加为引用。
- 使用外部标识 - 为标识注册稀疏包,而无需进行完整的 MSIX 打包。
注释
推送通知、后台任务和应用服务等功能需要包标识。 基本生命周期和激活 API 无需打包即可工作。
与 UWP 控制台应用的差异
| 功能 | UWP 控制台应用 | 桌面控制台应用 |
|---|---|---|
| 语言支持 | 仅限 C++/WinRT 和 C++/CX | C#、C++ 和任何.NET语言 |
| 项目模板 | 特殊 UWP 控制台模板 (VS 2017/2019) | 标准.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());
后台处理
控制台应用适用于后台处理任务:
- 数据导入/导出实用工具
- 文件监视器和处理器
- 计划的任务可执行文件
- 开发者工具和自动化脚本