VS2013无法加载Windows 8 App的资源文件

时间:2013-10-30 18:56:36

标签: c# xml visual-studio-2013 windows-8.1

我正在使用可自定义的实时图块创建一个应用程序,并且有一些我想要包含在项目中的标记XML模板。

XML文件已放在Assets/Tiles/FileName.xml

我正在尝试使用以下代码加载文档:

XmlDocument tileXml = new XmlDocument();
tileXml.LoadXml("ms-appx:///Assets/Tiles/SM_Date.xml");

文件名与目录中的文件名一样。运行时,应用程序强制退出,无法找到指定的文件。

这是我在输出中遇到的唯一错误

  

AppName.exe

中出现'System.Exception'类型的第一次机会异常

enter image description here

如何从项目资产中加载XML文件?

我尝试过以下路径

  

MS-APPEX:///Assets/Tile/SM_DAte.xml
  MS-APPX:///资产...
  MS-APPEX:// ...资产
  MS-APPX:// ...资产
  /资产...
  资产...
  /瓷砖...
  瓷砖...

一切都无济于事。我检查了输出目录,文件确实被复制到位于以下位置的资源目录:\bin\Debug\AppX\

尝试将其作为文件加载也不起作用:

using System.IO;
string xmlContent = File.ReadAllText("");

上面抛出一个错误,指出File未定义。

4 个答案:

答案 0 :(得分:3)

首先尝试将路径更改为“ms-appx”而不是“ms-appex”。 如果这不起作用(我希望如此)尝试将Stream获取到资源文件,然后调用 接收Stream的XmlDocument上的Load overloaded方法。

见这里:http://msdn.microsoft.com/en-us/library/windows/apps/hh965322.aspx 在这里:Getting a Stream from a resource file / content

答案 1 :(得分:2)

如果@atomaras的答案无效,请尝试按如下方式在XML文件上设置属性:

Build Action : Content
Copy to Output Directory : Copy Always or Copy if newer

刚刚检查过,XmlDocument似乎没有加载文件的重载 - 它接受XML字符串。请尝试LoadFromFileAsync

http://msdn.microsoft.com/en-US/library/windows/apps/br206263

答案 2 :(得分:1)

您是否尝试使用“Assets \ Tiles \ FileName.xml”? 因为有时在Windows上使用'\'而不是'/'会有所帮助。

答案 3 :(得分:-1)

我终于可以使用以下代码完成此任务:

XDocument xDoc = XDocument.Load(@"Assets\Tiles\SM_Date.xml");
XmlDocument wideTileXml = new XmlDocument();
wideTileXml.LoadXml(xDoc.ToString());

对我来说,这似乎是一种解决方法,因为我必须将XML作为纯文本加载,然后从纯文本XML中创建一个XmlDocument ...

有点hackish,但是现在,它做我需要的。感谢所有帮助。