12

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

现在,为了调试客户 foo 的应用程序,我必须执行以下操作:

  1. 转到我的项目目录中的文件系统并删除app.config
  2. 复制app.config.fooapp.config.foo - Copy.
  3. 重命名app.config.foo - Copyapp.config.
  4. 告诉 Windows 是的,我想更改文件的扩展名。
  5. 切换回 Visual Studio。
  6. 在我的项目中打开Settings.settings项目。
  7. 当 VS 询问我是否要使用已更改的新设置时,单击“是”13 或 14 次app.config
  8. 关闭Settings.settings

好的!现在我准备调试了!

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

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

4

7 回答 7

7

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

  1. 为每个客户端定义构建配置
  2. 在构建后事件中,只需将 app.config.xxx xcopy 到您的 bin 文件夹。其中 XXX 是在 VS 中可访问的构建配置的名称。类似于: xcopy app.config.$(ConfigurationName) $(OutDir)/app.config

VS 将在单独的文件夹中为您的客户端删除一个不同的构建,并使用正确的配置文件。bin/Client1/ bin/Client2/

于 2010-08-22T14:23:28.133 回答
3

您可以参考这篇文章了解一些好的做法:使用预构建事件管理多个配置文件环境

于 2008-10-06T20:30:35.877 回答
3

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

其目的正是为了更轻松地以configuration files自动化方式管理多个。如果您能看一看,我会非常高兴。

于 2011-04-15T12:03:59.230 回答
2

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

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

然后我写了一个小程序,让我选择一个客户,它简单地遍历每个项目的目录,如果我选择了客户 XXX,则复制app.config.XXXbin\debug\myprogram.exe.configbin\release\myprogram.exe.config. 只要这个程序知道解决方案的根源在哪里(每当我分支代码时我必须小心一点),它就像一个魅力。

于 2009-09-03T06:14:05.037 回答
2

这个线程太旧了,无法代表 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/

于 2018-09-28T06:40:26.137 回答
0

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

我在这里记录了我如何处理这个问题的步骤。用于部署到不同环境的多个 app.config 文件

于 2009-05-11T02:04:21.150 回答
0

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

  1. 在配置管理器中,创建您需要的配置
  2. 复制粘贴你的 app.config 并添加配置的名称,在我的例子中是 AHI、FIV、MGC,所以我的配置文件看起来像:App.AHI.config、App.MGC.config、App.FIV.Config。您可以随意命名它,但保持相同的约定
  3. 添加构建后事件。在我的情况下,它看起来像: xcopy $(ProjectDir)app.$(ConfigurationName).config $(TargetDir)$(TargetName).dll.config /y

这是我的帖子,所以您可以阅读更多详细信息

运行具有多个配置的测试项目

于 2016-02-18T22:10:04.680 回答