Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > WPF + XML


Автор: antikom 12.3.2009, 12:43
Здраствуйте есть броузерное wpf приложение которое работает с xml файлом. Для обращения нужно прописать полны путь к файлу С:/бла бла/File.xml. Как сделать так что бы не прописывать полный путь к файлу а лишь его имя. Файл лежит в файле проекта, все равно вылетает исключение- файл не найден.
Спасибо.

Автор: -Mikle- 13.3.2009, 03:23
Цитата(antikom @  12.3.2009,  15:43 Найти цитируемый пост)
Файл лежит в файле проекта

Наверно все таки в ПАПКЕ проекта. Это ничего не даст, так как программа работает в другой папке (bin\Debug или bin\Release)

Добавьте файл в сам проект, контекстное меню проекта (не солюшн) Add -> Existing Item (не забудьте в окне выбрать *.*)
После этого, выделите файл в списке файлов проекта и в окне свойств задайте Copy To Output в нужное вам значение. Теперь файл будет автоматом копироваться в папку с EXE'шником. Также вы можете захотеть чтоб ваши файлы лежали во вложенной папке. В этом случае вы можете через то же меню создать папку, а потом через меню папки добавить в нее файл (или Drag&Drop'ом). Теперь эта папка будет автоматом создаваться в папке с EXE'шником ос всеми файлами в ней у которых задано свойство Copy To Output в соответствующее значение.

Автор: antikom 13.3.2009, 12:09
-Mikle-, Cпасибо за ответ. Делал все также. Но на строчке
Код

     XElement element = XElement.Load(@"\Data\UserDb.xml");


Вылетает исключение:Не удалось найти часть пути "C:\Data\UserDb.xml".

Автор: Человек01 13.3.2009, 22:01
Если я правильно понял, то рядом с исполняемым.exe расположена папка Data, в которой находится нужный UserDb.xaml его и нужно получить.
Если так, то можно поступить следующим способом:
Код

String path=""+Directory.GetCurrentDirectory()"+"\\Data\\UserDb.xml";
XElement element = XElement.Load(path);

Пользуемся и говорим Человеку спасибо  smile 

P.S.: Если же папка Data с файлом UserDb.xaml являются частью проекта, то сам задаюсь http://forum.vingrad.ru/index.php?showtopic=251153&view=findpost&p=1811276

Автор: PashaPash 13.3.2009, 22:20
Человек01, с Directory.GetCurrentDirectory() поимеются проблемы после первого же OpenFileDialog smile. Вместо него юзать Path.GetDirectoryName(Application.ExecutablePath).  Вместо плюса - юзать Path.Combine. 
А в твоем топике правильный ответ - во втором куске ты сначала все вычитываешь из стрима ридером, а потом пытаешься из этого же стрима загрузить xaml. Потому и падает с root element is missing... И вообще - какой у тебя compile action для main.xaml?

Автор: Человек01 13.3.2009, 22:35
PashaPash, про Directory.GetCurrentDirectory() совсем забыл про фишку с OpenFileDialog, спасибо, что поправил.
А со своей http://forum.vingrad.ru/index.php?showtopic=251153&view=findpost&p=1811308 я уже разобрался и Reader там был не причем  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)