无法弄清楚web.debug.config与VS2010中的web.config替换

时间:2012-02-22 00:00:25

标签: asp.net web-config

有人能指出我在这里做错了吗?

我正在尝试设置一个ASP.NET Web应用程序项目,使用两个版本的web.config文件进行编译,用于Release和Debug构建。所以为了简单起见,这是我的web.config:

<?xml version="1.0"?>
<configuration>
  <connectionStrings>
    <add name="WhyMicrosoftSucksSoMuch" connectionString="" providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>

然后我在web.debug.config中执行以下操作:

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
      <add name="WhyMicrosoftSucksSoMuch"
           connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename='C:\FilePath\Database1.mdf';User Instance=true"
           providerName="System.Data.SqlClient" 
           xdt:Transform="SetAttributes" xdt:Locator="Match(connectionString)" />
  </connectionStrings>
</configuration>

如果我在Debug配置下发布它,结果web.config看起来不错,但是当我尝试从VS2010运行我的项目也在Debug配置下时,当我的逻辑尝试访问数据库时出现错误:

  

ConnectionString属性尚未初始化。

那么这里的诀窍是什么?

PS。请不要指向this document。我试过几次读它但是我从这么多多余的信息中感到头疼。我想MS不知道简要是什么。

1 个答案:

答案 0 :(得分:4)

在调试模式下运行时,它不会应用任何转换。

它仅在发布期间应用它们。您可以将调试连接字符串放在主web.config中,并将生产连接字符串添加到web.release.config

另外,您可能想要使用

xdt:Transform="Replace"