【问题标题】:Can't get Web.config transformation to work无法让 Web.config 转换工作
【发布时间】:2012-01-19 21:44:07
【问题描述】:

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

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

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

  • Web.config
  • Web.Dev.config

从第一个开始的sn-p:

<?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 也不会成为“可扩展”,截图:


图标来自 Team Foundation Server

有人知道怎么做吗?

【问题讨论】:

  • 您预计会发生什么?您尝试过什么来解决此问题?
  • 我尝试过使用默认构建配置(DebugRelease 及其 Web.configs)、发布和大量谷歌搜索。

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您需要一个配置实例来匹配您的 web.config 转换。例如,为了让 Web.Dev.config 编译和转换(在 Web 部署等期间),您需要在“Dev”配置中编译项目。

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

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

    【讨论】:

    • 我开始写这篇文章是因为我们确实有三个构建配置,DevDemoLive。至于特殊版本中发生的转换(我假设这包括发布),我现在就试一试:)
    • 我在相应的构建配置中发布时没有发生转换。
    • 有趣...我在这方面的唯一经验是 TFS 构建。您的新 web.dev.config 是否已检入您的 TFS 分支?
    • 是的,但我们不使用 TFS 构建/分支(我们的 TFS 仅用作排他锁和历史控制)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    • 2016-04-13
    • 2023-03-27
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多