WPF C # XML файл добавлен в качестве ресурса - PullRequest
3 голосов
/ 17 апреля 2011

Я использую файл XML, добавленный в мой проект со следующими свойствами:

Build Action : Resource
Copy to output directory : Copy Always

Затем, когда исполняемый файл запущен, мне нужно, чтобы пользователи могли редактировать XML (добавлять, удалять иизменить узлы).Является ли это возможным ?Или мне нужно изменить действие сборки на содержимое?

Спасибо

edit: я удалил его и снова добавил как контент.Но теперь у меня есть другая проблема: когда я добавляю его в проект, он ищет его в корневом каталоге приложения (WpfApplication1 \ WpfApplication1 \ myfile.xml).Но потом, когда я запускаю приложение, функция, отвечающая за добавление узла, работает нормально, но сохраняет файл в каталог WpfApplication1 \ WpfApplication1 \ bin \ Debug \!Следовательно, «настоящий» файл myfile.xml не обновляется.

Я использую:

XMLHosts.Load("myfile.xml");
XMLHosts.Save("myfile.xml");

, а источник данных объявлен как:

<XmlDataProvider x:Key="MyfileData"  Source="myfile.xml" XPath="Books/Book" />

1 Ответ

1 голос
/ 17 апреля 2011

Если вы хотите, чтобы xml был загружен с диска (и изменен), используйте Build Action = None и Copy = Copy Always.

Проблема, с которой вы столкнетесь, заключается в том, что если вы установите приложение в «Program Files», вы не сможете редактировать файл в Windows Vista / 7, если вы не являетесь администратором. - «Program Files» редактируется только во время установки.

Хорошей практикой будет копирование xml в% APPDATA% \ Ваше приложение (APPDATA = переменная среды, доступ с использованием System.Environment). Вы можете предварительно создать эту копию во время установки или при первом запуске. % APPDATA% предназначен для изменяемых настроек во время выполнения.

Если вы пометите свой xml как None + CopyAlways, вы можете скопировать его из каталога выполнения в% APPDATA% \ Ваше приложение при запуске приложения, если оно еще не существует по адресу назначения (если еще не скопировано).

Затем вы можете загрузить его из% APPDATA% \ Ваше приложение и прочитать последние настройки.

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