Как загрузить файл XML из файла в решении, построенном с помощью Embedded Resource? - PullRequest
0 голосов
/ 07 декабря 2011

Вот схема моего решения:

enter image description here

Я установил сборку на Embedded Resource, и когда я генерирую приложение, файл XML не появляется в /Выпустить папку.Это правильно, я хочу это поведение.

Теперь я пытаюсь загрузить этот файл в XDocument, чтобы я мог проанализировать данные в:

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

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

        Console.ReadKey();
    }
}

И я не получаю файлобнаружена ошибка, поскольку он пытается найти файл xml в полном пути к папке выпуска.

Как правильно загрузить эти данные в мой XDocument?

Ответы [ 3 ]

4 голосов
/ 07 декабря 2011

Использование GetManifestResourceStream():

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

Точные имена, используемые для ссылки на ресурсы, можно найти по телефону GetManifestResourceNames().

2 голосов
/ 07 декабря 2011

Ссылка на свойство ресурса напрямую и использование анализа вместо загрузки:

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

Пространство имен будет несколько отличаться в зависимости от структуры вашего проекта.

1 голос
/ 07 декабря 2011

Вы должны получить поток из сборки:

Assembly.GetExecutingAssembly().GetManifestResourceStream(name)

Где имя будет выглядеть примерно так: 'LinqToXml.Champions.xml'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...