2009-08-20 4 views
4

Я использую Visual Studio 2008, разрабатывая приложение winforms.settings.settings connectionstring in development vs production

У меня есть строка подключения к базе данных, хранящаяся в settings.settings.

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

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

ответ

2

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

В принципе, прямо сейчас 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 года. Вы должны иметь возможность создавать «конфигурационные преобразования» - ознакомьтесь с этими сообщениями в блоге:

Марк

+0

Соединения, похоже, все они предназначены для веб-приложений, а не winforms, в основном это то, над чем я работаю. Ваши решения сейчас кажутся наиболее простыми. – muhan

0

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

1

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

source 
config 
    MyProject 
    environment1 
    environment2 
    MyProject2 
    environment1 
    environment2 

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

+0

Действительно, это то, что мы раньше делали. Теперь мы используем приложение, которое я написал для автоматического развертывания, и обрабатываем это также. Но сценарии пост-сборки - это способ сделать, в общем. –

0

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

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

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

0

Вы можете определить свои подключения в настройках, использовать подключение к подключению в режиме отладки другого производственного соединения с директивой #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

, который работает до тех пор, пока у вас не будет среды для развертывания ... на моей работе мы сидим, uat, prod ... – mezoid

0

правой кнопкой мыши на веб-сайте в обозревателе решений и выберите Add Project Web Deployment.

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

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