You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用.NET 6控制台应用实现Windows桌面通知?旧方法已失效

.NET 6 下 Windows 11 控制台应用实现桌面通知的可行方案

方案一:官方WinRT API + Microsoft.Toolkit.Uwp.Notifications(推荐)

.NET 6 对WinRT互操作做了规范,旧的挂钩UWP DLL方式已不再支持,改用官方集成方案即可,步骤如下:

  1. 配置项目文件
    编辑控制台项目的.csproj,指定匹配Windows 11的目标版本(例如10.0.22000.0及以上):
<PropertyGroup>
  <TargetFramework>net6.0-windows10.0.22000.0</TargetFramework>
  <UseWindowsForms>false</UseWindowsForms>
  <UseWPF>false</UseWPF>
</PropertyGroup>
  1. 安装辅助NuGet包
    安装微软官方的Microsoft.Toolkit.Uwp.Notifications库,简化Toast通知的构造(无需手动编写XML):
Install-Package Microsoft.Toolkit.Uwp.Notifications
  1. 编写通知代码
    直接在控制台应用中调用API发送通知:
using Windows.UI.Notifications;
using Microsoft.Toolkit.Uwp.Notifications;

var toastContent = new ToastContent()
{
    Visual = new ToastVisual()
    {
        BindingGeneric = new ToastBindingGeneric()
        {
            Children =
            {
                new AdaptiveText() { Text = "控制台通知测试" },
                new AdaptiveText() { Text = "这是来自.NET 6控制台的桌面通知" }
            }
        }
    },
    Actions = new ToastActionsCustom()
    {
        Buttons =
        {
            new ToastButton("打开", "action=open")
        }
    }
};

var toast = new ToastNotification(toastContent.GetXml());
ToastNotificationManager.CreateToastNotifier("Windows.SystemToast.Default").Show(toast);

方案二:直接调用原生WinRT API(无第三方库)

如果不想依赖第三方库,可以直接构造Toast的XML内容调用原生API:

using Windows.UI.Notifications;

// 构造Toast的XML模板内容
var toastXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText02);
var textElements = toastXml.GetElementsByTagName("text");
textElements[0].AppendChild(toastXml.CreateTextNode("原生API通知"));
textElements[1].AppendChild(toastXml.CreateTextNode(".NET 6 控制台直接发送"));

var toast = new ToastNotification(toastXml);
ToastNotificationManager.CreateToastNotifier().Show(toast);

关键说明

  • .NET 6采用了新的WinRT互操作模型,必须通过指定Windows目标框架或引用Microsoft.Windows.SDK.Contracts包来引入WinRT API,旧的挂钩UWP DLL方式因此失效。
  • DesktopNotifications.Windows库依赖旧的WinRT兼容层,不适配.NET 6的新模型,不建议继续使用。
  • Windows 11中,控制台应用可使用默认应用ID(Windows.SystemToast.Default)发送通知,无需额外注册应用。

内容的提问来源于stack exchange,提问作者Grofit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 04:35:36