【问题标题】:Web.config transformation change path to appsettingsWeb.config 转换更改路径到 appsettings
【发布时间】:2018-07-19 12:01:52
【问题描述】:

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

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

但是当我去部署时,我已经手动将其更改为 prod 值:

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

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

【问题讨论】:

  • 我见过的一种方法是单独保留 configSource(这意味着所有环境都具有指向辅助文件的相同路径)。然后有一个构建后事件将开发环境中的“调试”版本复制到公共位置。以及生成特定环境版本的部署过程。

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


【解决方案1】:

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

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

这同样适用于 appSettings。

【讨论】:

    【解决方案2】:

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

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

    另一个是将 web.config 和 app.config 文件从源代码控制中提取出来(即通过 VS,添加到 git .ignore 文件等)。最好将它们保存在使用它们的环境中。这可能是最佳实践。如果您不移动配置文件,您可以将它们留在原处,根本不会遇到这个问题。

    您可以尝试确定动态使用哪个逻辑,预处理器命令#if DEBUG(根据您使用的配置文件确定哪些代码编译)等等。从长远来看,这会给您带来最少的麻烦但是,运行是为了让您的配置文件对其部署位置唯一。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-24
      • 2012-06-17
      • 2017-03-23
      • 1970-01-01
      • 1970-01-01
      • 2017-10-19
      • 2010-10-17
      • 1970-01-01
      相关资源
      最近更新 更多