Visual Studio:区分app.config用于调试和发布模式

问题描述 投票:36回答:5

在发布模式下构建时,是否可以自动使用单独的app.config?

换句话说,我想使用一个app.config进行测试,然后使用另一个app.config进行发布。

当前,我保留一个名为app.config.production的单独副本,并在构建发行版之后手动覆盖bin \ Release \ Application.exe.config。

visual-studio app-config production-environment
5个回答
17
投票

通过上下文菜单在解决方案资源管理器中卸载项目。

通过上下文菜单编辑.csproj文件并添加以下内容:

<PropertyGroup>
    <AppConfig>App.$(Configuration).config</AppConfig>
</PropertyGroup>

15
投票

我最近对类似的SO主题发表了迟来的回应:https://stackoverflow.com/a/27546685/2798367

为了清楚起见,我将在这里重复:

这对于聚会来说有点晚了,但是我偶然发现了一种为web.transform文件实现app.config方法的好方法。 (即,它使用了命名空间http://schemas.microsoft.com/XML-Document-Transform

我认为这是“不错的”,因为它是纯XML方法,不需要第三方软件。

父/默认App.config文件是根据您的各种构建配置派生的。这些后代只会覆盖他们所需的内容。在我看来,这比必须维护x个配置文件要完全复制(例如在其他答案中)要复杂得多和更可靠。

演练已发布在此处:http://mitasoft.wordpress.com/2011/09/28/multipleappconfig/


看,妈妈-我的IDE中没有明确的构建后事件!


7
投票

一种简单快速的方法是创建第二个文件“ App.release.config”并插入此预构建事件:

IF $(ConfigurationName) == Release COPY /Y "$(ProjectDir)App.config" "$(ProjectDir)App.debug.config"
IF $(ConfigurationName) == Release COPY /Y "$(ProjectDir)App.release.config" "$(ProjectDir)App.config"

以及本次发布活动:

IF $(ConfigurationName) == Release COPY /Y "$(ProjectDir)App.debug.config" "$(ProjectDir)App.config"

这可能有点奇怪,但是它将允许您继续使用.Settings文件作为调试设置,这些文件仍链接到App.configApp.release.config必须手工构建,但是切换此功能非常容易。


4
投票

我强烈建议SlowCheetah用于app.config转换。在Visual Studio Gallery]中访问此nuget宝石


0
投票

我不知道这是否有帮助,但是app.config将识别标准的MSBUILD替换字符串,例如$(Configuration)。

© www.soinside.com 2019 - 2024. All rights reserved.