В VSTO дополнение Excel код:
Dim XMLDoc As XElement = XElement.Load("XMLFile1.xml")
генерирует a FileNotFound
ошибка с сообщением ("Не удалось найти файл 'C:\Users\doug\Documents\XMLFile1.xml'".) Это смотрит в папке My Documents, но XML-файл расположен в папке VS Projects для того проекта. Я установил свойство "Copy to Output Directory" XML-файла для "Копирования всегда". Когда я изменяю код для включения полного пути в XML-файл работы кода.
Кроме того, если я включаю вышеупомянутый код в Windows Console или другой тип проекта, он работает правильно. Я только получаю его в Excel Addin. Вышеупомянутое верно для VSTO 2008/Excel 2003 и VSTO 2010/Excel 2010.
При использовании относительного пути текущий каталог ( Environment.CurrentDirectory
) используется для разрешения этого пути. В случае надстройки VSTO автоматически устанавливается папка с документами пользователя. Однако для консольного приложения это значение устанавливается в ту же папку, что и исполняемый файл, и поэтому вы испытываете разное поведение.
Если ваш файл будет развернут в той же папке, что и ваша сборка надстройки VSTO, вы можете использовать ( AppDomain.CurrentDomain.BaseDirectory
) для создания полного пути к файлу.
Пример в C #:
string filename = "XMLFile1.xml";
string path = Path.Combine(
AppDomain.CurrentDomain.BaseDirectory,
filename);
XElement.Load(path);