我在Web.Debug.config中有一个connectionString,在Web.Release.config中有一个不同的字符串。

发布项目时,Web.Release.config的内容不会出现在发布的Web.config中。为什么?

Web.config

<configuration>
    <connectionStrings>
        <!-- <add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-SalvaVidas-20130610104655;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-SalvaVidas-20130610104655.mdf" /> -->
    </connectionStrings>


Web.Debug.config

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
    <connectionStrings>
        <add name="MyContext"
             providerName="System.Data.SqlClient"
             connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=MyDb;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\MyDb.mdf" />
    </connectionStrings>


Web.Release.config

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
    <connectionStrings>
        <add name="MyContext"
             providerName="System.Data.SqlClient"
             connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;Server=ServerName;Database=MyDb;Trusted_Connection=True;Integrated Security=SSPI;" />
    </connectionStrings>

最佳答案

问题是您没有使用Web.debug.config / Web.release.config作为转换。

您需要做:

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="MyContext"
         connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=SalvaVidas;Server=ServerName;Database=MyDb;Trusted_Connection=True;Integrated Security=SSPI;"
         xdt:Transform="SetAttributes"
         xdt:Locator="Match(name)"/>
</connectionStrings>


xdt:Locator条目将通过位于Web.config中的name属性在原始connectionString > add中找到一个条目。 xdt:Transform会将属性更改为Web.release/debug.config中指定的属性。

但是,这在Web.config的当前状态下不起作用,因为连接字符串条目已被注释掉。如果保留注释,则需要将xdt:Transform更改为Insert

有关Web.config转换的更多信息,请参见this MSDN entry

07-24 09:52
查看更多