我在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)"/>
但我不知道如何清除我不想要的评论,并添加我想要的评论。
有什么想法吗?
答案 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>