无法使Web.config转换工作

时间:2012-01-04 09:10:34

标签: c# asp.net web-config web-config-transform

首先,我们没有使用Web应用程序项目,我们正在使用Web站点类型的项目。

在我们的项目中,我们有3种构建配置,分别是:Dev(用于开发),Demo(用于测试)和Live(最终版本)。

我们有两个文件(但最终它们将是4个):

  • 的Web.config
  • Web.Dev.config

第一段摘录:

<?xml version="1.0"?>
<configuration>
  <connectionStrings>
    <add name="SomeConnectionString" connectionString="oldConnStr" providerName="System.Data.SqlClient"/>
  </connectionStrings>
  <system.web>
    <compilation targetFramework="4.0" debug="false">
      <assemblies>
        <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
      </assemblies>
    </compilation>
  </system.web>
</configuration>

这就是转型:

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="SomeConnectionString" connectionString="newConnString" providerName="System.Data.SqlClient" xdt:Transform="Replace" xdt:Locator="Match(name)" />
  </connectionStrings>
  <system.web>
    <compilation debug="true" xdt:Transform="SetAttributes(debug)" />
  </system.web>
</configuration>

它根本不工作,Web.config也不会变成'可扩展',截图:

Web.config isn't expandable
图标来自Team Foundation Server

有谁知道如何使这项工作?

2 个答案:

答案 0 :(得分:2)

我发现这不能在网站项目中完成。它需要一个.csproj文件,而网站没有。

答案 1 :(得分:1)

您需要一个配置实例来匹配您的web.config转换。例如,为了使Web.Dev.config能够进行编译和转换(在Web部署等过程中),您需要在'Dev'配置中编译项目。

如果您没有定义Dev配置(默认情况下,在启动新的VS项目时通常会获得调试和发布配置),您可以单击下拉框并列出所有可用配置。您通常可以在Visual Studio中的绿色“播放”(开始调试)按钮旁边找到它。选择“Configuration Manager”选项,然后对于所选项目,选择配置下拉列表并选择。然后,您可以创建名为Dev的配置(如果需要,可以从现有配置中复制设置)。完成后,请务必刷新项目树。

值得注意的是,在VS版本(即Ctrl + Shift + B)版本的标准版本中,不应用trasnformations。这些通常在通过Web Deploy或某种部署工具发布应用程序时应用。应用的转换将取决于所选的构建配置。即在'Dev'配置中部署,将应用您的web.dev.config转换。