如何读取UWP中的嵌入资源?
How to read embedded resources in UWP?
我正在将我的一个应用程序从 WP 8.0 迁移到 UWP。我想对普通用户隐藏一些 JSON 内容。在以前的版本中,我能够将那些 JSON 文件的构建操作设置为 'Embedded Resource' 并使用以下方法迭代它们:
Application.GetResourceStream(new Uri(path, UriKind.Relative));
但是UWP中没有这个方法。
那么有什么方法可以读取UWP中的嵌入资源吗?或者除了将构建操作设置为 'Content'?
之外,还有另一种存储这些文件的方法
您可以使用 Assembly class 的方法遍历可用资源列表:
var names = someInstance.GetType()
.GetTypeInfo()
.Assembly
.GetManifestResourceNames();
然后从上面的列表中按全名加载资源:
var stream = someAssembly.GetManifestResourceStream(name);
然后用流做任何你想做的事。
您需要获取嵌入资源的程序集,然后调用 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;
}
}
}
我正在将我的一个应用程序从 WP 8.0 迁移到 UWP。我想对普通用户隐藏一些 JSON 内容。在以前的版本中,我能够将那些 JSON 文件的构建操作设置为 'Embedded Resource' 并使用以下方法迭代它们:
Application.GetResourceStream(new Uri(path, UriKind.Relative));
但是UWP中没有这个方法。
那么有什么方法可以读取UWP中的嵌入资源吗?或者除了将构建操作设置为 'Content'?
之外,还有另一种存储这些文件的方法您可以使用 Assembly class 的方法遍历可用资源列表:
var names = someInstance.GetType()
.GetTypeInfo()
.Assembly
.GetManifestResourceNames();
然后从上面的列表中按全名加载资源:
var stream = someAssembly.GetManifestResourceStream(name);
然后用流做任何你想做的事。
您需要获取嵌入资源的程序集,然后调用 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;
}
}
}