【问题标题】:Read a Text File in Windows 8在 Windows 8 中读取文本文件
【发布时间】:2012-03-10 07:44:20
【问题描述】:

我在阅读 中的嵌入式资源(文本文件)时遇到了一些问题,通常我使用Assembly.GetExecutingAssembly(),但我似乎无法在这个中做到这一点。我正在引用 System.Reflection 命名空间,但它说找不到,认为它可能已被删除。

有什么想法吗?

当前使用的是 Windows 8 Consumer Preview

代码: Assembly readAssembly = Assembly.GetExecutingAssembly(); StreamReader streamReader = new StreamReader(readAssembly.GetManifestResourceStream("Test.txt"));

错误: System.Reflection.Assembly' 不包含 'GetExecutingAssembly' 的定义

【问题讨论】:

  • [如何读取嵌入式资源文本文件][1] [1]的可能重复:stackoverflow.com/questions/3314140/…
  • @supergeek,GetExecutingAssembly() 有什么问题?它是否返回null?它会抛出异常吗?它会吐在你的麦片上吗?
  • 它说它找不到参考虽然我肯定在参考 System.Reflection.. 似乎它可能被删除以像support.microsoft.com/kb/319292 这样的方式工作
  • 奇怪,the docs 说它在 Windows 8 Beta 和 Consumer Preview 上受支持...你能发布调用 GetExecutingAssembly() 的确切代码吗?
  • 你是说 WinRT 吗? Windows 8 不太可能是这里的问题...

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


【解决方案1】:

WinRT 中,资源应包含在包中。您使用Package.Current.InstalledLocation.GetFileAsync 来读取资源。

以下帖子有一些示例代码:
http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/d4b327e3-a8f2-4d3c-8ed7-ba2ea953d0b9

【讨论】:

  • 谢谢 :) 其他人的提示:搜索 WinRT 而不是 Windows 8 哈哈
【解决方案2】:

在 AppStore 库中,您可以使用以下代码:

Stream stream = this.GetType().GetTypeInfo().Assembly.GetManifestResourceStream(fileName);

【讨论】:

  • 谢谢,这正是我所需要的。您还可以通过查看程序集的一部分来找出文件的确切名称:(假设您有如上所示的程序集) string[] names = assembly.GetManifestResourceNames();
【解决方案3】:

为什么不使用 VS 2012 中提供的 ReadFileAsync() 方法。 将文本文件添加到您的项目中并调用异步方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多