Включение XML-файлов при развертывании приложения WPF - PullRequest
8 голосов
/ 05 апреля 2011

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

Когда я пытаюсь опубликовать приложение, используя VS2010 ClickOnce, XML-файлы не включаются в установочный файл даже после того, как они помечают «Действия при построении файлов для содержимого» и «Копировать в выходной каталог» как «Всегда копировать».При запуске установленного приложения, приложение сообщает, что файлы не найдены.Я вижу папку Application_Files в папке установки, созданной ClickOnce, но она не содержит файлы XML.

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

Спасибо, Naveen

Обновление 1Структура прикладного решения состоит из трех проектов, скажем, P1, P2 и P3.P3 является основным проектом запуска.P1 и P2 являются проектами библиотеки классов.Файлы XML добавляются в проект P2.Файлы помечены как Build Action -> Content and Copy -> Copy Always.Однако эти файлы не копируются в папку данных приложения ClickOnce во время публикации приложения.

Ответы [ 2 ]

6 голосов
/ 11 октября 2012

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

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

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

там 2 клика, которые использует clickonce:

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

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

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

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

...