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。
我有一个 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。