在开发期间管理多个应用配置文件

时间:2008-10-06 20:29:10

标签: c# .net visual-studio

我正在构建一个由多个不同客户使用的应用程序。每个客户都有相当数量的自定义业务逻辑,我已经巧妙地将其重构为一个在运行时加载的程序集。该程序集的名称以及许多其他客户特定的设置都存储在应用程序的配置文件中。

现在,这是为了调试客户foo的应用程序我必须做的事情:

  1. 转到项目目录中的文件系统并删除app.config
  2. app.config.foo复制到app.config.foo - Copy
  3. app.config.foo - Copy重命名为app.config
  4. 告诉Windows是的,我想更改文件的扩展名。
  5. 切换回Visual Studio。
  6. 打开项目中的Settings.settings项目。
  7. 点击“是”13或14次,如果我想使用app.config中已更改的新设置,VS会询问我。
  8. 关闭Settings.settings
  9. 好!现在我准备调试了!

    在我看来,打开Settings.settings的必要性是,或者应该是不必要的:我不需要重新生成Settings.cs中的默认值,因为我不使用他们。但这是我所知道的唯一方法,让VS知道app.config文件已更改的事实,以便构建将其复制到输出目录。

    必须有一种更简单的方法来做到这一点。它是什么?

7 个答案:

答案 0 :(得分:7)

您还可以让Visual Studio通过以下方式自动化Robert的方法:

  1. 为每个客户定义构建配置
  2. 在post build事件中,只需将xcopy app.config.xxx添加到bin文件夹即可。其中XXX是VS中可访问的Build Config的名称。类似于:xcopy app.config。$(ConfigurationName)$(OutDir)/app.config
  3. VS将在单独的文件夹中为您的客户端删除不同的版本,并使用正确的配置文件。 斌/客户端1 / 仓/客户机2 /

答案 1 :(得分:3)

您可以参考此帖子了解一些良好做法:Managing Multiple Configuration File Environments with Pre-Build Events

答案 2 :(得分:3)

考虑到管理多个配置文件的混乱,我制作了这个工具:http://envride.codeplex.com/

其目的正是为了更容易以自动方式管理多个configuration files。如果你看一下,我会很高兴的。

答案 3 :(得分:2)

有几个人建议使用多个VS配置,我认为这些配置可行,但每次我在配置之间切换时都需要我重建解决方案。

在我这样做的时候,我所做的事情似乎有点愚蠢,但是我已经使用了近一年了,它的工作非常顺利。在我的项目中,我为每个客户创建了一个单独的app.config.XXX文件。实际的app.config文件仅用于生成Settings.cs - 它具有所有正确的设置名称及其默认值。它永远不会被复制到构建目录。

然后我编写了一个小程序,让我选择一个客户,只需浏览每个项目的目录,如果我选择了客户XXX,则将app.config.XXX复制到bin\debug\myprogram.exe.config和{{1 }}。只要这个程序知道解决方案的根源(每当我分支代码时我都要小心一点),它就像一个魅力。

答案 4 :(得分:1)

此线程太旧,无法代表VS中的当前工具。

  1. 您可以使用行为类似于web.debug.config的插件,但适用于app.config。

https://marketplace.visualstudio.com/items?itemName=GolanAvraham.ConfigurationTransform

  1. 对于没有插件的相同app.config转换。

https://www.linkedin.com/pulse/multi-appconfig-visual-studio-2017-benjamin-davis/

答案 5 :(得分:0)

您可以选择定义多个Visual Studio解决方案配置,每个客户一个,并为您的Windows应用程序项目定制MSBuild目标。

我已经记录了我在这里处理这个问题的步骤。 Multiple app.config files for deploying to different environments

答案 6 :(得分:0)

经过一番挖掘和解决后,我的测试项目使用了多种配置,

  1. 在Configuration Manager中,创建所需的配置
  2. 复制粘贴你的app.config并添加配置的名称,在我的例子中是AHI,FIV,MGC,所以我的配置文件看起来像:App.AHI.config,App.MGC.config,App.FIV。配置。您可以根据需要命名,但保持相同的约定
  3. 添加Post-Build活动。在我的情况下,它看起来像:xcopy $(ProjectDir)app。$(ConfigurationName).config $(TargetDir)$(TargetName).dll.config / y
  4. 这是我的帖子,所以你可以阅读更多细节

    Running a Test Project with Multiple Configurations