切换不同的app.config

时间:2013-11-07 13:37:43

标签: c# .net app-config

我有一个Windows控制台应用程序。我从app.config获取了一些值。有写日志文件。调试时,我想在桌面上编写它们。但是在发布应用程序时,日志应该在远程服务器中。现在,我必须在每次调试和发布之间手动设置值。

我们可以创建两个版本的app.config文件并正确使用它们吗?

办理登机手续时,我们只会检查app.config中的生产。

请记住,它不是一个asp.net Web应用程序。在这种情况下,我们可以使用不同的web.config文件。

2 个答案:

答案 0 :(得分:5)

是的,你可以,但你需要一个扩展来做到这一点。我过去曾使用SlowCheetah

使用SlowCheetah为更改日志路径的发布版本添加转换。你的app.Release.config转换文件看起来像这样。

<?xml version="1.0" encoding="utf-8" ?>
<!-- For more information on using transformations 
 see the web.comfig examples at http://go.microsoft.com/fwlink/?LinkId=214134. -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">

<appSettings>
  <add key="logDirectory" value="D:\releaseLogs" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
</appSettings>

</configuration>

您可以根据需要为测试和调试环境添加转换。

在您的源代码管理中,您将签入:

  • 包含应用程序所需的所有密钥的app.config
  • app.Release.config,其中包含可更改Release环境中需要更改的键的转换。

构建解决方案后,SlowCheetah将根据目标环境将正确的转换应用于app.config。

答案 1 :(得分:2)

扩展的另一种替代方法是在项目中添加Post-Build事件:

if "Debug"=="$(ConfigurationName)" goto :nocopy
del "$(TargetPath).config"
copy "$(ProjectDir)\App.Release.config" "$(TargetPath).config"
:nocopy

将App.config复制到App.Release.config并根据需要进行更改,当您发布为Release时,将使用相应的文件。