Открытие XML-файла, расположенного в папке надстройки - PullRequest
5 голосов
/ 13 марта 2010

В VSTO Excel добавьте код:

Dim XMLDoc As XElement = XElement.Load("XMLFile1.xml")

генерирует ошибку FileNotFound с сообщением (" Не удалось найти файл 'C: \ Users \ doug \ Documents \ XMLFile1.xml'. "). Он просматривается в папке Мои документы, но Файл XML находится в папке VS Projects для этого проекта. Я установил для свойства XML-файла «Копировать в выходной каталог» значение «Копировать всегда». Когда я изменяю код, чтобы включить полный путь к файлу XML, код работает.

Кроме того, если я включу приведенный выше код в консоль Windows или проект другого типа, он будет работать правильно. Я получаю это только в Excel Addin. Вышесказанное относится к VSTO 2008 / Excel 2003 и VSTO 2010 / Excel 2010.

Ответы [ 2 ]

13 голосов
/ 15 марта 2010

Когда вы используете относительный путь, текущий каталог (Environment.CurrentDirectory) используется для разрешения этого пути. В случае надстройки VSTO это автоматически устанавливается в папку пользовательских документов. Однако для консольного приложения это значение устанавливается в той же папке, что и исполняемый файл, и поэтому вы испытываете другое поведение.

Если ваш файл будет развернут в той же папке, что и сборка надстройки VSTO, вы можете использовать (AppDomain.CurrentDomain.BaseDirectory) для создания полного пути к файлу.

Пример, в C #:

string filename = "XMLFile1.xml";

string path = Path.Combine(
    AppDomain.CurrentDomain.BaseDirectory,
    filename);

XElement.Load(path);
1 голос
/ 20 марта 2012

Вы также можете использовать:

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