如何在发布项目时交换连接字符串?

时间:2013-10-11 17:59:39

标签: asp.net visual-studio-2010 iis web-config publishing

我可以看到Web.config文件包含两个文件:

-web.Debug.config
-web.Release.config

在此配置文件中,有以下注释:

  

在下面的示例中,“SetAttributes”转换将更改   “connectionString”的值仅在使用“ReleaseSQLServer”时才使用   “匹配”定位器查找具有值“MyDB”的属性“名称”。

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

什么是"Match" locator? 我已经在Web.config中有一个连接字符串所以我该如何设置它? 主web.config文件应该包含生产连接字符串还是反过来? 我正在寻找那些做过类似事情的人的挚爱

2 个答案:

答案 0 :(得分:7)

我们正在使用xdt:Transform =“Replace”,它基本上取代了我们开发DB的连接字符串,它完美地运行。见下文:

开发连接字符串(在您的情况下是web.Debug.config):

<connectionStrings>
  <add name="MyDB" connectionString="Data Source=DebugSQLServer;Initial Catalog=MyDebugDB;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>

生产连接字符串(在您的情况下是web.Release.config):

<connectionStrings xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
    <add name="MyDB" connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True" xdt:Transform="Replace" xdt:Locator="Match(name)" />
</connectionStrings>

答案 1 :(得分:0)

Match(name)表示您的案例中的connectionString的名称 MyDB ,如果它与web.config中的相同,那么它将设置connectionString属性发布网站时web.debug.config文件connectionString中的内容。可以在MSDN找到完整的文档。并且可以找到基本的方法here