C# 切换不同的app.config

C# 切换不同的app.config,c#,.net,app-config,C#,.net,App Config,我有一个windows控制台应用程序。我从app.config获得一些值。有许多用于写入日志文件的方法。调试时,我想在桌面上编写它们。但是当发布应用程序时,日志应该在远程服务器中。现在,我必须在每次调试和发布之间手动设置值 我们可以创建两个版本的app.config文件并正确使用它们吗 签入时,我们仅签入app.config进行生产 请记住,它不是asp.net web应用程序。在这种情况下,我们可以有不同的web.config文件。是的,您可以,但您需要一个扩展名来完成。我过去就用过这个 使用

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

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

签入时,我们仅签入app.config进行生产


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

是的,您可以,但您需要一个扩展名来完成。我过去就用过这个

使用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,其中包含更改在您的发布环境中需要不同的密钥的转换

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

扩展的另一种替代方法是在项目中简单地添加生成后事件:

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

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

那么,当您签入代码时,您该怎么做?是否仅签入app.config.release?我不确定在构建解决方案时,程序将查找哪一个?创建并签入包含适当转换的app.config、app.Release.config和app.Debug.config。当项目构建时,SlowCheetah将把转换应用到输出app.config。我可以只使用#if DEBUG吗?是否可以保存文件大小?