2010-01-13 2 views
2

У нас есть развернутое приложение ClickOnce, развернутое в 2 разных местах. Оба требуют некоторые настройки в app.config (Кроме того, среда разработки)Разное app.config для приложения ClickOnce

В настоящее время процесс создания этих установок заключается в том, чтобы кто-то вручную изменил эти настройки с визуальной студии и перестроил. Это, конечно, боль.

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

Как люди справляются с этим?

(Я ищу конкретные решения/примеры, «использовать автоматизированную систему сборки» может быть целью, но это не очень конкретно ..)

+0

Некоторые связанные с информацией [здесь] (http://blogs.msdn.com/b/vsto/archive/2010/ 03/09/фокусы-с-приложение-конфиг-и-ClickOnce-развертывания-Саурабх-bhatia.aspx). –

ответ

0

Я думаю, что есть два решения:

  • Как вы сказали, создать несколько-проектов. Проект в основном представляет собой правильный app.config, правильную конфигурацию разложения и т. Д. В противном случае он просто делегирует поток кода «реальный» проект.
  • Другая возможность - создать несколько файлов app.config. Как app-develop.config => Develop-Version, app-производительный.config => Productive-Version, app-other-thing.config ... Теперь вы добавляете дополнительную задачу в файл MSBuild (.csproj) который копирует правильное приложение - *. config в файл app.config. Мы делаем что-то подобное с нашей конфигурацией журнала, и она отлично работает.
0

Я бы переместить эти параметры из app.config. У нас было множество проблем с сохранением значений настроек конфигурации во время обновлений ClickOnce, и я больше не верю в это. Я бы переместил эти настройки в легкую базу данных, такую ​​как SqlLite или SqlCe, и распространил ее с вашим приложением. Тогда сохранение настроек - это просто вопрос заполнения разных значений в базе данных.

+0

Как настроить, как значения в базе данных устанавливаются на основе среды? Например, как ваша база данных знает (или получает ответ), что она находится в среде dev вместо test/prod? –

0

У меня есть blogged about our solution, который хорошо работает.

В основном у нас есть отдельный файл, который содержит всю конфигурационную информацию для каждой среды (то есть различное местоположение развертывания), процесс сборки использует эту информацию для установки значений в файле конфигурации/локальной базе данных.

Решение не мешает разработчикам повседневной деятельности и работает с развертываниями ClickOnce (т. Е. Файл конфигурации обновляется до подписания манифестов).

Позвольте мне знать, что вы думаете о решении ... хорошо или плохо :-)

Смежные вопросы