繁体   English   中英

如何从解决方案中的文件加载XML文件,并使用嵌入式资源进行构建?

[英]How to load an XML file from a file in the solution, build with Embedded Resource?

这是我的解决方案的概述:

在此处输入图片说明

我已将构建设置为“嵌入式资源”,并且在生成应用程序时,XML文件未出现在/ Release文件夹中。 这是正确的,我想要这种行为。

现在,我正在尝试将该文件加载到XDocument中,以便可以解析其中的数据:

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Parsing XML.");

        XDocument championXml = XDocument.Load("Champions.xml");

        Console.ReadKey();
    }
}

而且我收到文件未找到错误,因为它试图在发布文件夹的完整路径中找到xml文件。

如何将这些数据正确加载到XDocument中?

使用GetManifestResourceStream()

var asm = Assembly.GetExecutingAssembly();
using(var stream = asm.GetManifestResourceStream("Namespace.Champions.xml"))
{
    // ...
}

可以通过调用GetManifestResourceNames()找到用于引用资源的确切名称。

直接引用资源属性,并使用Parse代替load:

XDocument championXml = XDocument.Parse(Properties.Resources.ChampionsXML);
                                                             ^^^^^^^^^^^^
                                           //Name of your resource |

命名空间会有所不同,具体取决于您的项目结构。

您应该从汇编中获得流:

Assembly.GetExecutingAssembly().GetManifestResourceStream(name)

其中的名称将类似于:'LinqToXml.Champions.xml'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM