如何设置 Web.Config 转换以满足本地和生产配置?

How to set up Web.Config transformation to cater for Local and production configurations?

我面临这样的困境,即必须在本地计算机上为 web.config 使用不同的连接字符串,并进行发布转换以使生产二进制文件在 Web 服务器上使用 machine.config .

所以我的 Visual Studio 解决方案中有这些文件:

Web.Config Web.Debug.Config Web.Release.Config

在 web.config 中,我删除并添加了新的连接字符串。

<remove name="connstring">
<add name="connstring" ConnectionString="blahblah" />

我想做的是在部署(通过 TFS 构建)到 Web 服务器时,最终 web.config 中没有任何内容,以便我的 Web 应用程序可以使用服务器上 machine.config 中的任何内容.

我该怎么做?

您可以使用 RemoveAll 转换属性删除配置设置。假设您正在部署 Release 构建配置,您可以通过将以下内容放入 Web.Release.Config 来生成一个完全空的 web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" xdt:Transform="RemoveAll" />

由此产生的 web.config 将在顶部有 XML 声明,除此之外别无其他。

如果您只想删除某些配置子部分,请将 RemoveAll 转换属性添加到要删除的部分。例如,以下 Web.Release.Config 将删除所有应用程序设置:

<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <appSettings xdt:Transform="RemoveAll" />
</configuration>

查看完整的 Transformation Syntax Documentation 了解更多详情。