Использование встроенного файла в VS2008 ASP.NET Project - PullRequest
3 голосов
/ 19 августа 2010

У меня есть проект ASP.NET и я хочу включить в проект файл XML для хранения некоторых относительно статических данных. Для этого я выбрал «Добавить файл» из контекстного меню решения и выбрал свой XML-файл. Добавив это в свой проект, я затем захотел загрузить XML изнутри кода. Я попробовал следующее:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("MyData.xml");

Я тоже пробовал:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("~/MyData.xml");

Но, похоже, он ищет в текущем каталоге (т.е. в моем каталоге VS2008), а не в проекте. Я ошибаюсь? Есть ли способ просто ссылаться на ресурс, который встроен в проект, как этот?

Ответы [ 2 ]

0 голосов
/ 19 августа 2010

Шаги, которые вы выполнили, чтобы добавить XML-файл в ваш проект ASP.NET, не внедряются в ваше приложение, это как просто другой файл в вашем приложении, например наши страницы .aspx.

, вы можете попробовать

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("~/MyData.xml"));

также было бы лучше хранить такие файлы в папке App_Data

0 голосов
/ 19 августа 2010

Тильда '~' во второй попытке оценивается, когда она является частью URL файла, установленного в свойстве элемента управления, такого как HyperLink.NavigateUrl. Если это просто часть строки, переданной в xmlDocument.Load (), она должна быть явно оценена с использованием Server.MapPath("~/MyData.xml")

В качестве альтернативы

Вы можете включить файл в качестве встроенного ресурса. Щелкните правой кнопкой мыши файл в вашем решении и в Build Action выберите Embedded Resource. В параметре «Копировать в выходной каталог» выберите «Не копировать»

Вот пример того, как читать файл:

        var assembly = Assembly.GetExecutingAssembly();
        if (assembly != null)
        {
            var stream = assembly.GetManifestResourceStream("RootProjectNamespace.MyData.xml");
            if (stream != null)
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(stream);
            }
        }

Обратите внимание, вы должны добавить к имени файла префикс по умолчанию для вашего проекта. Вы можете найти это, щелкнув правой кнопкой мыши по своему проекту, выбрав свойства и на вкладке «Приложение» пространство имен по умолчанию вверху.

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