0

是否可以根据用户是否运行 Windows 8 在 System.IO 和 StorageFile 方法之间切换,而无需创建两个单独的项目?我知道我可以在 Windows 8 中使用 System.IO,但如果可能的话,我想利用内置的异步方法(即用户在 Win8 上)。

我目前没有要测试的 Windows 7 机器,但我担心程序启动时可能会抛出缺少库的错误。有没有办法做到这一点?

4

2 回答 2

1

StorageFile类不是 .NET 4.5 的一部分,它是 Windows 运行时的一部分。这样的类可以很容易地被它们的根命名空间识别Windows。Windows 运行时 API 仅在 Windows 8 上可用,主要设计用于Windows Store apps. 虽然我自己没有尝试过,但它们也可以在桌面应用程序中使用。我仍然不确定文件 IO 类的效果如何,因为 Windows 商店应用程序在沙盒环境中运行,并且基于其清单中声明的​​功能只能有限地访问文件系统。

对于桌面应用程序中的文件 IO,我会坚持使用System.IO命名空间中的 .NET 类。在 .NET 4.5 中也有几种可用的异步方法,主要在StreamStreamReaderStreamWriter类中,可用于通过 async/await 范例读取和写入文件。它们不仅仅绑定到 Windows 8,但它们确实需要安装 .NET 4.5,不包括 Windows XP

不幸的是StorageFile.GetBasicPropertiesAsync,据我所知,没有与 .NET 4.5 等效的异步方法。如果您确实还需要使这些调用异步,则始终可以将同步调用包装到您自己的异步方法中,您可以从 UI 线程调用该方法。

于 2012-12-09T08:03:03.867 回答
1

异步 StorageFile 方法是 .net 4.5 框架的一部分。您的应用应将框架部署为安装的依赖项 - 请参阅面向开发人员的 .NET Framework 部署指南

于 2012-12-08T18:05:40.933 回答