Asp.net VS2010中每个发布配置文件的不同连接字符串

Asp.net VS2010中每个发布配置文件的不同连接字符串,asp.net,visual-studio,web-config,web-config-transform,msbuild-wpp,Asp.net,Visual Studio,Web Config,Web Config Transform,Msbuild Wpp,是否可以根据选定的web发布配置文件更改连接字符串(或仅更改服务器主机)?也许是用别的什么方法 我的意思是,对于概要文件“Test”,将连接字符串“MyConnString”(在已发布的Web.config中)更改为“Data Source='example.com,14333;…”,对于概要文件“Production”-更改为“Data Source=./SQLExpress;…”,这正是创建Web配置转换的目的。您在文章中提供的链接提供了专门针对连接字符串执行此操作的演练 要开始转换,请在项

是否可以根据选定的web发布配置文件更改连接字符串(或仅更改服务器主机)?也许是用别的什么方法


我的意思是,对于概要文件“Test”,将连接字符串“MyConnString”(在已发布的Web.config中)更改为
“Data Source='example.com,14333;…”
,对于概要文件“Production”-更改为
“Data Source=./SQLExpress;…”

,这正是创建Web配置转换的目的。您在文章中提供的链接提供了专门针对连接字符串执行此操作的演练

要开始转换,请在项目资源管理器中右键单击web.config文件,然后选择“添加配置转换”。假设您的解决方案配置中有ConfigA和ConfigB,将添加两个新文件:Web.ConfigA.config和Web.ConfigB.config

如果你打开这些新文件,除了一堆注释外,它们都是空的。它们实际上包含了一个连接字符串示例,您可以使用该示例-如下所示:

<connectionStrings>
  <add name="MyDB" 
    connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True" 
    xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
<connectionStrings>
  <add name="myConnectionString" 
    connectionString="Data Source=ConfigASqlServer;Initial Catalog=ConfigADatabase;Integrated Security=True" 
    xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>

取消对此节的注释,并将“name”属性更改为基本web.config文件中连接字符串的名称。将“connectionString”属性设置为要用于ConfigA的实际值。那么像这样,

<connectionStrings>
  <add name="MyDB" 
    connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True" 
    xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
<connectionStrings>
  <add name="myConnectionString" 
    connectionString="Data Source=ConfigASqlServer;Initial Catalog=ConfigADatabase;Integrated Security=True" 
    xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>

使用ConfigB所需的连接字符串,对Web.ConfigB.config文件重复此过程


现在,当您在visual studio中使用Publish命令时,它将自动转换基本web.config文件,并将“connectionString”属性设置为发布时所处的任何配置。

我真的不知道如何使用web.config转换。请您提供一个简单的示例,说明如何将配置文件a的连接字符串更改为CS_a,将配置文件B的连接字符串更改为CS_B?据我所知,
SetAttribute
将替换整个属性值。是否可以只替换字符串的一部分作为属性值?请回答另一个问题。转换取决于配置-调试、发布等。是否可以将其与发布配置文件(Server1、Server2等)链接。我对所有配置文件使用相同的配置。或者我必须为每个配置文件创建单独的配置?但是在这种情况下如何链接配置文件和配置呢?abatishchev,在Web.Release.config,Web.Debug.config中,您可能需要更新调试模式下的编译、错误和日志记录等内容,在Web.Staging.config,Web.Release.config中,您可能有连接字符串和类似的内容。请参阅示例:这说明了如何根据生成配置更改Web.config。然而,问题是如何基于发布配置文件而不是配置来实现这一点。