如何访问 PCL 类中的嵌入式解决方案文件

本文关键字:嵌入式 解决方案 文件 PCL 何访问 访问 | 更新日期: 2023-09-27 18:36:12

我正在尝试读取随资源一起添加的 PCL 内容文件。 理想的用例是 REST 服务模拟,我想在其中托管一些 JSON 文件来测试网络服务。如果服务器不可用,我希望能够读取这些 json 文件作为替代方案,那么我该怎么做才能实现这一点?

JSON 文件和 NetworkService 类都在 PCL 中。 假设没有其他解决方案是相关的

这就是我尝试过的

  • 已将模拟 JSON 文件和文件夹拖到解决方案中
  • 设置生成操作 ->内容
  • 将"复制到输出目录"设置为">如果较新则复制"

这是网络服务回退代码的一部分

var uri = new Uri("ms-appx:///mock/users/" + UserID + "/GET.json");
var file = await StorageFile.GetFileFromApplicationUriAsync(uri);

当我尝试运行此代码时,我得到一个System.IO.FileNotFoundException。 知道我可能做错了什么吗?我尝试了嵌入式资源方法,但也没有奏效。

如何访问 PCL 类中的嵌入式解决方案文件

这是一种

嵌入式资源方法,目前有点有效,我将投票/标记一个涉及构建操作>内容的更好答案,因为这是处理此问题的更简洁的方法。 解决方案在此处的答案之一中提出

// 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();