Web.Debug.config不会将连接字符串转换为MVC 5项目中的Web.config

时间:2016-04-25 21:06:04

标签: asp.net .net asp.net-mvc visual-studio web-config

我创建了一个新的VS 2015 Web项目MVC5。默认情况下,我可以看到 Web.config Web.Debug.config

阅读几篇文章,我真的看不到我真正需要做的是为了让它从Web.Debug.config获取我的值并替换当前的Web.config。

我一直在看另一个正在做的工作项目并且工作正常,但我经历了很多属性和设置,我看不出有什么不同。

我可以右键单击Web.Debug.config和Preview,它会告诉我它将用“10.10.10.10”替换“test”,所以它对我来说似乎很好(就像它应该工作但运行项目它不会改变价值)

实施例

项目:

调试/任何CPU,运行谷歌浏览器,问题是数据源没有改变

Web.Debug.config

 <connectionStrings>
    <add name="Envy" connectionString="Data Source=10.10.10.10\MSSQLSERVER2014;Initial Catalog=myDB;user id=myLoginID;password=password" providerName="System.Data.SqlClient"
            xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    <add name="EnvyIdentity" connectionString="Data Source=10.10.10.10\MSSQLSERVER2014;Initial Catalog=myDB;user id=myLoginID;password=password" providerName="System.Data.SqlClient"
        xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    <add name="DNNSmartstore" connectionString="Data Source=10.10.10.10\MSSQLSERVER2014;Initial Catalog=myDB;user id=myLoginID;password=password" providerName="System.Data.SqlClient"
        xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    <add name="DNNPos" connectionString="Data Source=10.10.10.10\MSSQLSERVER2014;Initial Catalog=DevFood_POS;user id=myLoginID;password=password" providerName="System.Data.SqlClient"
        xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>

的Web.config

  <connectionStrings>
    <add name="Envy" connectionString="Data Source=test\MSSQLSERVER2014;Initial Catalog=myDB;user id=myLoginID;password=password" providerName="System.Data.SqlClient"/>
    <add name="EnvyIdentity" connectionString="Data Source=10.10.10.10\MSSQLSERVER2014;Initial Catalog=myDB;user id=myLoginID;password=password" providerName="System.Data.SqlClient"/>
    <add name="DNNSmartstore" connectionString="Data Source=10.10.10.10\MSSQLSERVER2014;Initial Catalog=myDB;user id=myLoginID;password=password" providerName="System.Data.SqlClient"/>
    <add name="DNNPos" connectionString="Data Source=10.10.10.10\MSSQLSERVER2014;Initial Catalog=DevFood_POS;user id=myLoginID;password=password" providerName="System.Data.SqlClient"/>
  </connectionStrings>

2 个答案:

答案 0 :(得分:10)

开箱即用,转换(调试/发布)应用于发布(部署)。在部署时不在构建上。

要在构建时实现此目的,您可能需要对项目文件进行一些手动编辑。看看前面的示例:https://gist.github.com/EdCharbeneau/9135216

答案 1 :(得分:5)

非常接近,但向后。在这种情况下,请仅使用 Web.config Web.Release.config

将所有调试设置放在 Web.config 中,将发布设置放在 Web.Release.config 中,不要使用 Web.Debug.config 。调试将使用常规的Web.config进行,只有已发布的版本才能获得“发布”设置。

来自上述示例:

Web.config

<!-- test/debug settings in regular web.config -->
    <connectionStrings>
        <add name="Envy" connectionString="Data Source=10.10.10.10\MSSQLSERVER2014;Initial Catalog=myDB;user id=myLoginID;password=password" providerName="System.Data.SqlClient"/>
        <add name="EnvyIdentity" connectionString="Data Source=10.10.10.10\MSSQLSERVER2014;Initial Catalog=myDB;user id=myLoginID;password=password" providerName="System.Data.SqlClient"/>
        <add name="DNNSmartstore" connectionString="Data Source=10.10.10.10\MSSQLSERVER2014;Initial Catalog=myDB;user id=myLoginID;password=password" providerName="System.Data.SqlClient"/>
        <add name="DNNPos" connectionString="Data Source=10.10.10.10\MSSQLSERVER2014;Initial Catalog=DevFood_POS;user id=myLoginID;password=password" providerName="System.Data.SqlClient"/>       
      </connectionStrings>

Web.Release.config

<connectionStrings>
    <add name="Envy" connectionString="Data Source=test\MSSQLSERVER2014;Initial Catalog=myDB;user id=myLoginID;password=password" providerName="System.Data.SqlClient"
        xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    <add name="EnvyIdentity" connectionString="Data Source=10.10.10.10\MSSQLSERVER2014;Initial Catalog=myDB;user id=myLoginID;password=password" providerName="System.Data.SqlClient"
        xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    <add name="DNNSmartstore" connectionString="Data Source=10.10.10.10\MSSQLSERVER2014;Initial Catalog=myDB;user id=myLoginID;password=password" providerName="System.Data.SqlClient"
        xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    <add name="DNNPos" connectionString="Data Source=10.10.10.10\MSSQLSERVER2014;Initial Catalog=DevFood_POS;user id=myLoginID;password=password" providerName="System.Data.SqlClient"
        xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>

Web.Debug.config 是放置要部署到测试服务器时要应用的设置的地方。起初这个名字很容易让人误解。我唯一使用此功能的地方是我的测试服务器需要与“开发”框中的设置不同。 :-)