2016-02-01 200 views
1

我有一个Xamarin.forms共享的项目,我想编写,并从具有对每个平台(Android,iOS和Windows)的本地驻留在XML文件中读取。读取和写入XML文件

我提到这一点:Working with files,但我似乎得到错误:

Error 2 The type or namespace name 'SharedPage' could not be found (are you missing a using directive or an assembly reference?) 

在行:var assembly = typeof(SharedPage).GetTypeInfo().Assembly;

由于我是新来Xamarin.forms我也想知道在哪里必须为每个平台项目放置文件。

+0

正如抬起头,我发现Xamarin.Forms起初非常有吸引力,但最终不得不放弃它由于严重的性能问题和缺乏UI控制。 –

+0

我不知道这是否会有所作为,但如果我记得正确地将'typeof(SharedPage)'改为'typeof(this)'为我工作。 –

+0

@OwenJames似乎并没有为我工作:-( – Arti

回答

1

在你的代码,你所引用的命名空间Test151.XML.WinPhone,但是你应该是指真正的命名空间是Test151.WinPhone.XML,为您WinPhone项目有Test151.WinPhone组装根。

所以,你有你的TryFile.cs内改变这种: -

#if WINDOWS_PHONE 
      //var resourcePrefix = "Test151.XML.WinPhone."; 
      var resourcePrefix = "Test151.WinPhone.XML."; 
#endif 

你也试图从XML文件夹,其中您还没有该文件设置为EmbeddedResource获得的资源,所以你需要也这样做。

此外,您尝试使用的Xamarin.Forms组装,试图从加载资源,所以在那里,因为你有这样的: -

var assembly = typeof(ContentPage).GetType().Assembly; 

您需要将其更改为沿此线的东西: - 。(由于它是一个SharedProject它会给你正确的组件,其中从加载资源

var assembly = typeof(TryFile).Assembly; 

最后一件事,你提你想阅读并从XML文件编写这部分代码你已经从'Wor你提到的King with files'页面不会帮助你,因为你正试图加载一个嵌入式资源,除非你的目标是将它写入文件系统,否则你不能回写。

它需要真正重点,如果你的目标是完成读取和写入的本地存储的文件,该文件的后半部分。

+1

Hi @pete您能否帮我解决PCL项目的正确目录? 'VAR总成= typeof运算(TryFile).Assembly;'不用于PCL项目 – Arti

+0

工作,我不得不按客户要求去为它移动到PCL项目。 OMG! – Arti

+0

为什么没人解释这种类型?我找不到解释。你是否修复PCL? – Dpedrinha