我有一个web.config文件,其中包含connectionstring&调试文件中的appsettings如下:
<connectionStrings configSource="config\connectionStrings-debug.config" />
<appSettings configSource="config\AppSettings-debug.config" />
但是当我去部署时,我已经手动将其更改为prod值:
<connectionStrings configSource="config\connectionStrings.config" />
<appSettings configSource="config\AppSettings.config" />
我正在查看转换,但我不知道在这种情况下我是如何使用它的,因为每个示例都试图更改值而不是文件路径。
答案 0 :(得分:1)
您应该能够通过简单的转换实现您想要的效果。 e.g:
<connectionStrings xdt:Transform="SetAttributes" configSource="/new/path" />
同样适用于appSettings。
答案 1 :(得分:0)
有很多方法可以解决这个问题。
第一个是有两个连接字符串,一个用于调试,另一个用于实时使用。声明字符串时,请使用Name
属性为其提供可从代码中调用的唯一标识符。然后,您可以使用If(System.Diagnostics.Debugger.IsAttached)
或其他一些布尔检查来确定在运行时使用哪个字符串,由Name
提取。
另一种方法是将web.config和app.config文件从源代码控制中取出(即通过VS,添加到git .ignore文件等)。他们更好地保持在使用它们的环境中。这可能是最好的做法。如果您没有移动配置文件,您可以将它们保留在原位并且根本不会出现此问题。
您可以尝试使用逻辑来确定动态使用哪个,预处理器命令#if DEBUG(根据您使用哪个配置文件来确定哪个代码编译),等等。这将给您带来最少的麻烦。但是,从长远来看,是保持配置文件对其部署位置的唯一性。