【问题标题】:Windows Developer Preview C# version - features missing?Windows Developer Preview C# 版本 - 缺少功能?
【发布时间】:2011-09-20 05:19:25
【问题描述】:

我最近安装了 Windows 8 开发预览版,但遇到了很多问题。查看新的 C# API,我可以说缺少一些功能。例如,我无法等待读取文件 - 经典的 StreamReader 不再接受文件名字符串,而是 Stream 的实例。

我错过了什么?我把对象浏览器翻过来了,实际上什么也没找到。

更新:这显然是可移植类库和传统编译之间的区别:http://msdn.microsoft.com/en-us/library/system.io.streamreader.aspx。因此,我们是否可以使用不可移植的 Windows 8 API?

【问题讨论】:

  • 您使用的是 WinRT 版本的 .NET 吗?
  • @Daniel 我想是的,我刚刚从 Metro 模板创建了一个新项目。我没有使用WinMD,如果这是问题,输出设置为Windows Metro style Application

标签: c# windows-8 c#-5.0


【解决方案1】:

WinRT 可能不支持这一点。它应该在完整的 .NET 4.5 中。

【讨论】:

  • 我当然希望如此,虽然我没想到微软会期望我们玩一个新玩具(并实际开发一些东西)而不给我们提供文件读取等如此“边缘”的功能。跨度>
  • System.IO中还有其他类。
  • @Mikulas 您应该使用来自Windows.Storage 命名空间的 WinRT 类来处理文件,特别是将它们作为流打开。然后,您可以使用扩展方法 AsStream() 将流包装为 System.IO.Stream
【解决方案2】:

开发者预览版仅包括用于开发 Windows Metro 应用程序的库,而不是完整的框架。这(可悲)也排除了 System.Data 和其他一些知名的命名空间。

【讨论】:

  • 那是因为 Dev Preview 只有 VS Express。但是您可以从这里安装完整的 VS(当然也可以预览):microsoft.com/download/en/… - 这将启用非 Metro 项目类型。
【解决方案3】:

要从 Metro 应用程序读取/写入文件,请使用新的 Window.Storage API。由于 Metro 应用程序的安全性和异步特性,我认为经典文件读/写不会在 Metro 应用程序中可用。

【讨论】:

  • 找到了那个,尽管其他人可能仍在为此苦苦挣扎。谢谢!希望也能找到其他缺失的功能。
【解决方案4】:

除了您使用 Metro 模板会取消 WinRT(请参阅其他答案)这一事实之外,您还可以简单地打开一个流:

using(FileStream fs = new FileStream(filename))
using (StreamReader reader = new StreamReader(fs))
{
    string text = reader.ReadToEnd();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多