C# 切换不同的app.config
我有一个windows控制台应用程序。我从app.config获得一些值。有许多用于写入日志文件的方法。调试时,我想在桌面上编写它们。但是当发布应用程序时,日志应该在远程服务器中。现在,我必须在每次调试和发布之间手动设置值 我们可以创建两个版本的app.config文件并正确使用它们吗 签入时,我们仅签入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文件。是的,您可以,但您需要一个扩展名来完成。我过去就用过这个 使用
请记住,它不是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吗?是否可以保存文件大小?