web.config转换 - 从connectionstring部分删除注释

时间:2014-08-08 22:38:54

标签: c# asp.net visual-studio connection-string web-config-transform

我在web.config中存储了几个不同的连接字符串,用于开发和测试。除了一个之外的所有内容都已注释掉,因此我可以根据需要更改信息。

当我发布时,我想将connectionStrings节点中的所有内容(包括注释)替换为:

<add name="myDb" connectionString="Data Source={SERVER};Initial Catalog=ManEx;User Id={USER};Password={PASSWORD};" providerName="System.Data.SqlClient"  />
<!--<add name="myDb" connectionString="Data Source={SERVER};Initial Catalog=ManEx;Integrated Security=True" providerName="System.Data.SqlClient" />-->

我知道如何用这个来改变活动字符串:

<add name="myDb"
     connectionString="Data Source={SERVER};Initial Catalog=ManEx;User Id={USER};Password={PASSWORD};"
     providerName="System.Data.SqlClient"
     xdt:Transform="Add" 
     xdt:Locator="Match(name)"/>

但我不知道如何清除我不想要的评论,并添加我想要的评论。

有什么想法吗?

4 个答案:

答案 0 :(得分:31)

而不是转换字符串,或使用&#34;删除&#34;和&#34;插入&#34;清理该部分尝试使用&#34;替换&#34;。

例如:

<connectionStrings xdt:Transform="Replace">

    <add name="myDb"
         connectionString="Data Source={SERVER};Initial Catalog=ManEx;User Id={USER};Password={PASSWORD};"
         providerName="System.Data.SqlClient" />

</connectionStrings>

您可以完全按照自己的意愿配置此部分,即使这意味着您要添加新评论。

答案 1 :(得分:3)

我根据this answer所做的是以下内容:

  • 删除了connectStrings中现有的Web.config部分,其中包含在调试时使用的注释掉的连接字符串;
  • 使用正确的连接字符串重新添加connectionStrings部分,以便在部署应用时使用。

所以在你的Web.config转换文件中你有这样的东西:

<!-- Removes the existing connectionStrings section which contains internal connection strings used for debugging -->
<connectionStrings xdt:Transform="Remove">    
</connectionStrings>

<!-- Re-adding the existing connectionStrings section -->
<connectionStrings xdt:Transform="Insert">

<add name="MyConnectionStringName" connectionString="Data Source=CLUSTERSQL;Initial Catalog=MyDatabase;Integrated Security=True;multipleactiveresultsets=True" providerName="System.Data.SqlClient"  xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>

</connectionStrings>

答案 2 :(得分:0)

在Visual Studio 2013中,您可以拥有多个Web.config文件。

此外,当您创建新项目时,VS会为您创建2:Web.Debug.config和Web.Release.config。这样,您可以为调试项目和发布项目提供不同的Web.Config

答案 3 :(得分:0)

如果需要在替换的连接字符串中添加/插入/设置属性(例如,如果使用部署),则可以嵌套转换以删除注释并替换属性:

<connectionStrings xdt:Transform="Replace">
    <add name="connectionDatabase" 
         connectionString="#{ConnectionString}" 
         xdt:Transform="SetAttributes"
         xdt:Locator="Match(name)" />
</connectionStrings>