Включение xml-файлов при развертывании приложения WPF

#wpf #xml #file #deployment #inclusion

#wpf #xml #файл #развертывание #включение

Вопрос:

У меня есть приложение WPF с 3 проектами, представляющими трехуровневую архитектуру. В качестве основного проекта задается один проект. У меня есть несколько XML-файлов в одном из неосновных проектов. Доступ к этим XML-файлам осуществляется функциями, определенными в классах этого проекта.

Когда я пытаюсь опубликовать приложение с помощью VS2010 ClickOnce, XML-файлы не включаются в установочный файл даже после пометки действия сборки файлов для Content и Copy-to-outputDirectory как Copy Always. При запуске установленного приложения приложение сообщает, что файлы не найдены. Я вижу папку Application_Files в папке установки, созданной ClickOnce, но она не содержит XML-файлов.

Итак, мой вопрос заключается в том, как я могу включить XML-файлы в установочные папки, а также получить URL-адрес их местоположения при запуске приложения.

Спасибо, Naveen

Обновление 1: Структура прикладного решения состоит из трех проектов, скажем, P1, P2 и P3. P3 является основным запускаемым проектом. P1 и P2 являются проектами библиотеки классов. XML-файлы добавляются в проект P2. Файлы помечены как Действие сборки -> Содержимое и Копировать -> Копировать всегда. Однако эти файлы не копируются в папку данных приложения с помощью ClickOnce при публикации приложения.

Ответ №1:

Простое решение. Щелкните правой кнопкой мыши на файле вашего проекта, который вы хотите опубликовать. Выберите свойства. Затем в открывшемся окне выберите опубликовать. Нажмите на кнопку Файлы приложения. Там найдите yo .xml-файл, который по умолчанию будет иметь тип ‘Файл данных’. Измените его на Include. Сохраните, перестройте и опубликуйте, и все.

Надеюсь, это поможет кому-то, кто в этом нуждается.

Ответ №2:

существует 2 местоположения, которые clickonce использует:

  • расположение основного исполняемого файла и всех необходимых dll
  • расположение всего, что не является исполняемым, то есть ресурсов, таких как ваш xml

итак, у вас есть каталог приложений и каталог данных. Обращение к каталогу приложения все еще можно выполнить следующим образом AppDomain.CurrentDomain.BaseDirectory .

Но если вы хотите обратиться к каталогу данных, вам нужно что-то конкретное для clickonce: ApplicationDeployment.CurrentDeployment.DataDirectory .

Я не уверен, проверили ли вы этот каталог данных, потому что вы не упомянули об этом в своем сообщении.

Комментарии:

1. Спасибо. Я попытался указать адресацию каталога данных. Но проблема, похоже, заключается в том, что сами XML-файлы не копируются при публикации приложения. Если у меня есть XML-файлы в основном проекте, они будут скопированы в папку, созданную ClickOnce. Но мои XML-файлы отсутствуют в основном проекте; они добавлены в неосновной проект. Я проверил папку с файлом установки, но не смог найти там ни одного из своих XML-файлов.