是否可以根据用户是否运行 Windows 8 在 System.IO 和 StorageFile 方法之间切换,而无需创建两个单独的项目?我知道我可以在 Windows 8 中使用 System.IO,但如果可能的话,我想利用内置的异步方法(即用户在 Win8 上)。
我目前没有要测试的 Windows 7 机器,但我担心程序启动时可能会抛出缺少库的错误。有没有办法做到这一点?
是否可以根据用户是否运行 Windows 8 在 System.IO 和 StorageFile 方法之间切换,而无需创建两个单独的项目?我知道我可以在 Windows 8 中使用 System.IO,但如果可能的话,我想利用内置的异步方法(即用户在 Win8 上)。
我目前没有要测试的 Windows 7 机器,但我担心程序启动时可能会抛出缺少库的错误。有没有办法做到这一点?
StorageFile类不是 .NET 4.5 的一部分,它是 Windows 运行时的一部分。这样的类可以很容易地被它们的根命名空间识别Windows
。Windows 运行时 API 仅在 Windows 8 上可用,主要设计用于Windows Store apps
. 虽然我自己没有尝试过,但它们也可以在桌面应用程序中使用。我仍然不确定文件 IO 类的效果如何,因为 Windows 商店应用程序在沙盒环境中运行,并且基于其清单中声明的功能只能有限地访问文件系统。
对于桌面应用程序中的文件 IO,我会坚持使用System.IO
命名空间中的 .NET 类。在 .NET 4.5 中也有几种可用的异步方法,主要在Stream、StreamReader和StreamWriter类中,可用于通过 async/await 范例读取和写入文件。它们不仅仅绑定到 Windows 8,但它们确实需要安装 .NET 4.5,不包括 Windows XP。
不幸的是StorageFile.GetBasicPropertiesAsync
,据我所知,没有与 .NET 4.5 等效的异步方法。如果您确实还需要使这些调用异步,则始终可以将同步调用包装到您自己的异步方法中,您可以从 UI 线程调用该方法。
异步 StorageFile 方法是 .net 4.5 框架的一部分。您的应用应将框架部署为安装的依赖项 - 请参阅面向开发人员的 .NET Framework 部署指南