2010-09-10 6 views
2

как я могу настроить мой Visual Studio 2010 C# решение/проект так , что, когда я выбрать конфигурацию Debug - ConnectionString # 1 будет использоваться Release - Строка соединения # 2 и «Myconfiguarion1 "(который был скопирован с отладки) -> строка соединения # 3Different configuaration строка для конкретной конфигурации сборки

я ему работать с отладить таким образом:

if (ConfigurationManager.ConnectionStrings["ConnectionString1"] != null) 
{ 
    winApplication.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString1"].ConnectionString; 
} 

#if DEBUG 
if(ConfigurationManager.ConnectionStrings["ConnectionString2"] != null) 
{ 
    winApplication.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString2"].ConnectionString; 
} 
#endif 

, но это не работает с„MybuildConfiguration“

+0

Я слышал кое-что, что библиотека Entenprise предлагает что-то предложить в этом поле. но может быстро найти информацию об этом. – Marty

ответ

4

Если вы пытаетесь сделать это для файла web.config проекта ASP.NET в Visual Studio 2010, он встроен через XML Transformations для web.config.

Web Deployment: Web.Config Transformations

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

Visual Studio App.config XML Transformations

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

+0

Существует активная проблема на сайте connect для поддержки app.config, как и для web.config. Проголосуйте здесь: https://connect.microsoft.com/VisualStudio/feedback/details/564414/support-for-transforming-app-config-files-in-the-same-way-web-config-files-can-be -transformed-per-configuration? wa = wsignin1.0 – veljkoz

+0

Спасибо. Попытаюсь. – Marty

+0

Будет ли это работать для .net 3.5 sp1? – Marty

2

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

Эти константы нужно определять только для активной конфигурации сборки, так что вы можете определить conn1 для конфигурации Debug, CONN2 для конфигурации выпуска, CONN3 для пользовательской конфигурации и т.д.

затем, в вашем коде, вы можете использовать:

#ifdef CONN1 
//use connection 1 
#else 
#ifdef CONN2 
    //use connection 2 

#else 
    //use connection 3 

#endif 
#endif 
+0

Thanx :) Это полезно. – Marty

+0

Но константы компилятора компилятора не влияют на webconfig: http://haacked.com/archive/2007/09/16/conditional-compilation-constants-and-asp.net.aspx. Но Аллен говорит, что вы можете изменять константы из webconfig. http://odetocode.com/blogs/scott/archive/2005/12/01/conditional-compilation-in-asp-net-2-0.aspx –

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