【发布时间】:2015-04-01 12:34:28
【问题描述】:
我开发了一个 .NET windows 应用程序,它可以在 Windows 7 和 8.1 上运行。然后我添加了 Windows 8 附带的 Toast 通知功能(来自这个问题:How can I use the Windows.UI namespace from a regular (Non-Store) Win32 .NET application?)。 这也有效,我只需要添加:
<PropertyGroup>
<TargetPlatformVersion>8.0</TargetPlatformVersion>
</PropertyGroup>
到项目文件。
当我从 Windows 8.1 SDK C:\Program Files (x86)\Windows Kits\8.1\References\CommonConfiguration\Neutral\Windows.winmd 引用 Windows.winmd 文件时,可执行文件不再在 Windows 7 上启动!我双击,就是这样。没有错误,没有消息。
由于我没有在网上找到任何解决方案,所以我的问题出现了:我如何做到这两点:向我的用户提供 toast 功能并制作相同的 .exe 在 Windows 7 上运行?
提前谢谢你!
编辑 事实证明,尽管 TargetPlatformVersion 设置为 8.0,但可执行文件仍然在 Windows 7 上启动,但在程序尝试加载 Windows 8 库时立即崩溃:
An unhandled exception of type 'System.TypeLoadException' occurred in ToastTester.exe.
Additional information: Could not find Windows Runtime type 'Windows.UI.Notifications.ToastNotificationManager'.
在线Application.Run(new Form1());
在第 9 行的 Form1.cs 中,我有 using Windows.UI.Notifications;
在运行时避免此异常的最佳方法是什么,即使预计此可执行文件将在 Windows 7 等 Windows.UI.Notifications 命名空间绝对不可用的环境中运行?
【问题讨论】:
-
我刚刚尝试过,如果我按照您的建议重新定位应用程序并添加对 Windows.winmd 的引用,编译后的 exe 仍然在 Windows 7 上为我运行。如果我尝试从 Windows.UI.Notifications 命名空间访问任何内容,它将在 Windows 8 上运行,但在 Windows 7 上会因错误而崩溃。
-
它是什么类型的应用程序?我使用 WPF 应用程序进行了测试。
标签: c# winforms visual-studio-2013 windows-8 windows-7