Web.config 应用程序设置的转换更改路径

Web.config transformation change path to appsettings

我有一个 web.config 文件,它在调试文件中包含连接字符串和应用程序设置,如下所示:

<connectionStrings configSource="config\connectionStrings-debug.config" />
<appSettings configSource="config\AppSettings-debug.config" />

但是当我去部署时,我手动将其更改为产品值:

<connectionStrings configSource="config\connectionStrings.config" />
<appSettings configSource="config\AppSettings.config" />

我正在研究转换,但我不知道在这种情况下如何使用它,因为每个示例都试图更改值而不是文件路径。

有很多方法可以解决这个问题。

第一个是有两个连接字符串,一个用于调试,一个用于实时使用。在声明您的字符串时使用 Name 属性 为它们提供一个您可以从您的代码中调用的唯一标识符。然后,您可以使用 If(System.Diagnostics.Debugger.IsAttached) 或其他一些布尔检查来确定在 运行 时间使用哪个字符串,由 Name 获取。

另一种方法是将 web.config 和 app.config 文件从源代码管理中拉出来(即通过 VS,添加到 git .ignore 文件等)。它们最好保留在使用它们的环境中。这可能是最佳实践。如果你不移动配置文件,你可以把它们留在原地,根本不会有这个问题。

您可以尝试确定要动态使用哪个的逻辑、预处理器命令 #if DEBUG(它根据您使用的配置文件确定编译哪些代码)等。给您最少的那个不过,长 运行 的麻烦在于让您的配置文件在其部署位置保持唯一性。

您应该能够通过简单的转换实现您想要的效果。例如:

<connectionStrings xdt:Transform="SetAttributes" configSource="/new/path" />

同样适用于 appSettings。