如何访问 PCL class 中的嵌入式解决方案文件
How does one access embedded solution files in a PCL class
我正在尝试读取 PCL 与资源一起添加的内容文件。理想的用例是 REST 服务模拟,我想在其中托管一些 json 文件来测试网络服务。如果服务器不可用,我希望能够读取这些 json 文件作为替代方案,那么我该怎么做才能实现这一目标?
json 文件和 NetworkService class 都在 PCL 中。假设没有其他解决方案相关
这是我试过的
- 将模拟 json 文件和文件夹拖到解决方案中
- 设置生成操作 -> 内容
- 设置复制到输出目录 -> 如果较新则复制
这是 NetworkService 回退代码的一部分
var uri = new Uri("ms-appx:///mock/users/" + UserID + "/GET.json");
var file = await StorageFile.GetFileFromApplicationUriAsync(uri);
当我尝试运行此代码时出现 System.IO.FileNotFoundException。任何想法我可能做错了什么?我尝试了 EmbeddedResource 方法,但也没有用。
这是一种暂时有效的 EmbeddedResource 方法,我将 upvote/mark 涉及构建操作 > 内容的更好答案,因为这是处理此问题的更简洁的方法。解决方案出现在答案之一 here
中
// the below approach is essential to getting the right assembly
var assembly = typeof(TestClass).GetTypeInfo().Assembly;
// Use this help aid to figure out what the actual manifest resource name is.
// can be removed later
string[] resources = assembly.GetManifestResourceNames();
// Once you figure out the name from the string array above, pass it in as the argument here.
// . replaces /
Stream stream = assembly.GetManifestResourceStream("TestMockJson.Mock.TestFile.Json");
var sr = new StreamReader(stream);
return sr.ReadToEnd();
我正在尝试读取 PCL 与资源一起添加的内容文件。理想的用例是 REST 服务模拟,我想在其中托管一些 json 文件来测试网络服务。如果服务器不可用,我希望能够读取这些 json 文件作为替代方案,那么我该怎么做才能实现这一目标?
json 文件和 NetworkService class 都在 PCL 中。假设没有其他解决方案相关
这是我试过的
- 将模拟 json 文件和文件夹拖到解决方案中
- 设置生成操作 -> 内容
- 设置复制到输出目录 -> 如果较新则复制
这是 NetworkService 回退代码的一部分
var uri = new Uri("ms-appx:///mock/users/" + UserID + "/GET.json");
var file = await StorageFile.GetFileFromApplicationUriAsync(uri);
当我尝试运行此代码时出现 System.IO.FileNotFoundException。任何想法我可能做错了什么?我尝试了 EmbeddedResource 方法,但也没有用。
这是一种暂时有效的 EmbeddedResource 方法,我将 upvote/mark 涉及构建操作 > 内容的更好答案,因为这是处理此问题的更简洁的方法。解决方案出现在答案之一 here
中// the below approach is essential to getting the right assembly
var assembly = typeof(TestClass).GetTypeInfo().Assembly;
// Use this help aid to figure out what the actual manifest resource name is.
// can be removed later
string[] resources = assembly.GetManifestResourceNames();
// Once you figure out the name from the string array above, pass it in as the argument here.
// . replaces /
Stream stream = assembly.GetManifestResourceStream("TestMockJson.Mock.TestFile.Json");
var sr = new StreamReader(stream);
return sr.ReadToEnd();