特定构建配置的不同配置字符串

时间:2010-09-10 13:19:39

标签: c# visual-studio-2010

如何配置我的Visual Studio 2010 C#解决方案/项目 当我选择Debug配置时 - 将使用ConnectionString#1 发布 - 连接字符串#2 和 “Myconfiguarion1”(从调试中复制) - >连接字符串#3

我以这种方式使用调试:

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”

2 个答案:

答案 0 :(得分:4)

如果您尝试在Visual Studio 2010中为ASP.NET项目的web.config文件执行此操作,则它是通过XML转换为web.config内置的。

Web Deployment: Web.Config Transformations

如果您正在尝试为app.config文件执行此操作,您可以使用相同的转换,但使用它们有点像黑客:

Visual Studio App.config XML Transformations

两者都归结为实际使用单独的配置文件,用于您将运行应用程序的不同环境。这允许您根据正在运行的环境为任何键提供不同的值。

答案 1 :(得分:2)

我认为你可以使用条件编译常量。要定义它们, 你必须打开项目属性窗口,选择编译选项卡,并在条件常量字段中定义一个名称,例如CONN1。

此常量仅针对您的活动构建配置进行定义,因此您可以为Debug配置定义CONN1,为Release配置定义CONN2,为自定义配置定义CONN3等。

然后,在您的代码中,您可以使用:

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

 #else
  //use connection 3

 #endif
#endif