settings.settings connectionstring в разработке против производства - PullRequest
4 голосов
/ 20 августа 2009

Я использую Visual Studio 2008, разрабатываю приложение winforms.

Моя строка подключения к базе данных хранится в файле settings.settings.

Для моей среды разработки и производства требуются разные учетные данные для входа в базу данных, и сейчас я вручную изменяю строку подключения перед сборкой для двух различных сред.

Есть ли лучшее решение?

Ответы [ 7 ]

2 голосов
/ 20 августа 2009

вечная проблема! : -)

По сути, сейчас Microsoft не может найти на это хороший ответ.

То, что я хотел бы сделать, это иметь обе строки подключения в моем файле настроек под двумя отдельными именами, а затем иметь параметр конфигурации в app.config, который говорит мне, какую из них использовать:

MyDatabaseDEV = server=(local);database=mydatabase;-........
MyDatabasePROD = server=ProdServer;database=MyDatabase;........

и в app.config

<appSettings>    
   <add key="UseDatabase" value="MyDatabaseDEV" />
</appSettings>

Этот параметр в app.config можно настроить в процессе сборки, например, с помощью командного файла «после сборки» или задачи MSBuild или чего-то еще, чтобы переключиться на «MyDAtabasePROD», когда вы производите (выпуск) сборку.

Microsoft обещает нам все более и более гибкие инструменты для .NET 4.0 / Visual Studio 2010, которые должны появиться к концу 2009 года. Вы должны иметь возможность создавать «преобразования конфигурации» - ознакомьтесь с этими сообщениями в блоге:

Марк

1 голос
/ 20 августа 2009

Где я работаю, это делается путем создания папки с именем config, которая содержит различные конфигурации.

source
 config
  MyProject
    environment1
    environment2
  MyProject2
    environment1
    environment2

При запуске сценария сборки он получает правильную конфигурацию в зависимости от среды, для которой выполняется сборка ...

0 голосов
/ 04 июня 2018

Я начал использовать настройку TestMode = "dev | prod | uat".

Проблема с целями компиляции заключается в том, что вы ничего не можете изменить после сборки.

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

При таком подходе все, что вам нужно сделать, это изменить флаг после развертывания или использовать программное обеспечение для развертывания, такое как Octopus, для его замены.

Я отказался от слияния файлов .config, которые сложны и подвержены ошибкам.

0 голосов
/ 05 октября 2009

Щелкните правой кнопкой мыши веб-сайт в обозревателе решений и выберите «Добавить проект веб-развертывания».

Всякий раз, когда создается этот новый проект WDP, он заменяет все указанные вами элементы конфигурации. Вы также можете иметь разные версии в зависимости от сборок Debug или Release. Он работает практически для всех параметров конфигурации, включая строку подключения. В сети много документации о том, как правильно его настроить, просто найдите «Проект веб-развертывания».

Это, безусловно, новый «стандартный» способ сделать это, пока MS не решит сделать его более формальным в какой-либо будущей версии .Net / Visual Studio, если они вообще это сделают.

0 голосов
/ 20 августа 2009

Вы можете определить ваши соединения в настройках, использовать dev connection в режиме отладки, иначе производственное соединение с директивой #if.

//affect your prod connection here
    #if DEBUG
       //re affect your dev connection here;
    #endif

Ссылка для объяснения: http://msdn.microsoft.com/fr-fr/library/4y6tbswk.aspx

0 голосов
/ 20 августа 2009

Вы должны добавить файл app.config в ваше приложение winform. В этом файле сохраните строку подключения в разделе ConnectionStrings.

В вашем коде при создании соединения используйте эту строку соединения, используя класс ConfigurationManager для доступа к файлу конфигурации.

Поэтому, когда вы развертываете свое приложение, вам нужно один раз указать строку подключения в файле конфигурации, и все будет работать как положено!

0 голосов
/ 20 августа 2009

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

...