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

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

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

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

Спасибо, Навин

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

2 ответа

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

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

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

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

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

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

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

Другие вопросы по тегам