Unity UWP项目如何修改目标框架以实现ToastNotification
解决Unity UWP项目修改TFM以启用ToastNotification API的问题
方法1:构建UWP项目后手动修改生成的csproj
- 打开Unity编辑器,切换到UWP平台(
File > Build Settings > 选择Universal Windows Platform > Switch Platform) - 配置好UWP构建参数(目标设备、SDK版本等),点击
Build选择输出文件夹生成VS项目 - 打开生成的VS解决方案,找到主项目对应的csproj文件(通常命名为
[你的项目名].csproj) - 编辑该文件,找到
<TargetFramework>节点,修改为:<TargetFramework>net6.0-windows10.0.17763.0</TargetFramework> - 保存文件并重新加载VS项目,即可正常调用
ToastNotification.Show()等完整API
方法2:用Unity PostProcessBuild自动修改(避免重复手动操作)
- 在Unity工程的
Assets/Editor目录下新建C#脚本(比如UWPPostBuildProcessor.cs) - 写入以下代码,实现构建完成后自动更新csproj的TFM:
using UnityEngine; using UnityEditor; using UnityEditor.Callbacks; using System.IO; using System.Xml; public class UWPPostBuildProcessor { [PostProcessBuild(100)] public static void OnPostProcessBuild(BuildTarget target, string pathToBuiltProject) { if (target != BuildTarget.WSAPlayer) return; string csprojPath = Path.Combine(pathToBuiltProject, PlayerSettings.productName + ".csproj"); if (!File.Exists(csprojPath)) { Debug.LogWarning("未找到UWP项目csproj文件:" + csprojPath); return; } XmlDocument doc = new XmlDocument(); doc.Load(csprojPath); XmlNamespaceManager nsManager = new XmlNamespaceManager(doc.NameTable); nsManager.AddNamespace("msbuild", "http://schemas.microsoft.com/developer/msbuild/2003"); XmlNode targetFrameworkNode = doc.SelectSingleNode("//msbuild:TargetFramework", nsManager); if (targetFrameworkNode != null) { targetFrameworkNode.InnerText = "net6.0-windows10.0.17763.0"; doc.Save(csprojPath); Debug.Log("已成功将UWP项目TFM更新为net6.0-windows10.0.17763.0"); } else { Debug.LogWarning("未在csproj文件中找到TargetFramework节点"); } } } - 后续每次构建UWP项目时,脚本会自动完成TFM修改,无需手动干预
额外注意事项
- 确保Unity的UWP构建配置中,
.NET scripting backend设置为.NET 6(路径:Edit > Project Settings > Player > UWP > Other Settings > Configuration > Scripting Backend) - 使用ToastNotification API时,需在VS项目中引用
Windows.UI.Notifications命名空间,并在Package.appxmanifest中启用通知相关权限(比如添加<Capability Name="internetClient" />)
内容的提问来源于stack exchange,提问作者Fatemeh Zare
相关产品推荐
相关产品推荐

