#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-файлов.