【问题标题】:How to read embedded resources in UWP?如何在 UWP 中读取嵌入式资源?
【发布时间】:2016-05-03 16:33:43
【问题描述】:

我正在将我的一个应用程序从 WP 8.0 迁移到 UWP。我有一些我想对普通用户隐藏的 JSON 内容。在以前的版本中,我能够将这些 JSON 文件的构建操作设置为“嵌入式资源”并使用以下方法对其进行迭代:

Application.GetResourceStream(new Uri(path, UriKind.Relative));

但是这种方法在 UWP 中不可用。

那么有什么方法可以读取 UWP 中的嵌入式资源吗?或者,除了将构建操作设置为“内容”之外,还有其他存储这些文件的方法吗?

【问题讨论】:

    标签: windows-phone win-universal-app embedded-resource windows-10-mobile


    【解决方案1】:

    您可以使用 Assembly 类的方法遍历可用资源列表:

    var names = someInstance.GetType()
                 .GetTypeInfo()
                 .Assembly
                 .GetManifestResourceNames();
    

    然后从上面的列表中按全名加载资源:

    var stream = someAssembly.GetManifestResourceStream(name);
    

    然后对流做任何你想做的事情。

    【讨论】:

      【解决方案2】:

      您需要获取嵌入资源的程序集,然后调用 GetManifestResourceStream。

      我有命名空间 YourProjectNameSpace 的示例,MyFolder 包含 MyFile.json:

      public class EndpointBuilder
      {
          private static String _filePath = "YourProjectNameSpace.MyFolder.MyFile.json";
      
          public async Task<Endpoint> Build() {
      
              var assembly = this.GetType().GetTypeInfo().Assembly;
              var stream = assembly.GetManifestResourceStream(_filePath);
      
              JsonSerializer jsonSerializer = new JsonSerializer();
              var serializer = new JsonSerializer();
      
              using (var sr = new StreamReader(stream))
              using (var jsonTextReader = new JsonTextReader(sr))
              {
                  Endpoint enpoint =  serializer.Deserialize<Endpoint>(jsonTextReader);
                  return enpoint;
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-30
        • 2020-06-01
        • 2011-09-21
        • 1970-01-01
        • 1970-01-01
        • 2023-03-03
        • 1970-01-01
        相关资源
        最近更新 更多