0

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

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

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

  • 网页配置
  • 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 不可扩展
图标来自 Team Foundation Server

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

4

2 回答 2

2

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

于 2012-01-19T13:44:07.430 回答
1

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

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

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

于 2012-01-04T09:18:31.933 回答