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

时间:2015-01-05 16:32:57

标签: c# json winrt-xaml portable-class-library win-universal-app

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

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

这是我试过的

  • 将模拟json文件和文件夹拖入解决方案
  • 设置构建操作 - >含量
  • 将复制设置为输出目录 - >复制如果更新

这是NetworkService回退代码的一部分

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

当我尝试运行此代码时,我收到System.IO.FileNotFoundException。任何想法我可能做错了什么?我尝试了EmbeddedResource方法,但也没有用。

1 个答案:

答案 0 :(得分:2)

这是一个有点工作的EmbeddedResource方法,我将upvote / mark一个更好的答案,涉及Build Action>内容是处理此问题的更简洁方法。解决方案在其中一个答案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();