.net ClickOnce应用程序的不同app.config

.net ClickOnce应用程序的不同app.config,.net,configuration,clickonce,.net,Configuration,Clickonce,我们在两个不同的地方部署了ClickOnce部署的应用程序。 两者都需要在app.config中进行一些不同的设置(除devel环境外) 现在生成这些安装的过程是由某人从VisualStudio手动更改这些设置并重新生成。这当然是一种痛苦 有人建议我们在解决方案中创建一个附加项目,该项目几乎只包含app.settings,而只在另一个项目中运行主窗体 人们是如何处理的 (我正在寻找具体的解决方案/示例,“使用自动生成系统”可能是目标,但不是很具体。我会将这些设置移出app.config。在Cli

我们在两个不同的地方部署了ClickOnce部署的应用程序。 两者都需要在app.config中进行一些不同的设置(除devel环境外)

现在生成这些安装的过程是由某人从VisualStudio手动更改这些设置并重新生成。这当然是一种痛苦

有人建议我们在解决方案中创建一个附加项目,该项目几乎只包含app.settings,而只在另一个项目中运行主窗体

人们是如何处理的


(我正在寻找具体的解决方案/示例,“使用自动生成系统”可能是目标,但不是很具体。

我会将这些设置移出app.config。在ClickOnce更新期间,我们在维护配置设置值方面遇到了很多问题,我不再信任它。我会将这些设置移动到一个轻量级数据库中,如SqlLite或SqlCe,并将其与应用程序一起分发。然后,维护设置只是在数据库中填充不同的值。

我认为有两种解决方案:

  • 正如你所说的,创建一个多项目的模型。该项目基本上表示正确的app.config、正确的deploment配置等。否则,它只是将代码流委托给“真实”项目
  • 另一种可能是创建多个app.config文件。比如app-develope.config=>developer Version,app-productive.config=>productive Version,app other thing.config。。。现在,您将向MSBuild文件(.csproj)添加一个附加任务,该任务将正确的app-*.config复制到app.config文件。我们在我们的日志配置中做了类似的事情,它工作得很好
我必须知道这是一个很好的方法

基本上,我们有一个单独的文件,其中包含每个环境的所有配置信息(即不同的部署位置),构建过程使用此信息在配置文件/本地数据库中设置值

该解决方案不会干扰开发人员的日常活动,并可用于ClickOnce部署(即在签署清单之前更新配置文件)


让我知道您对解决方案的看法…好或坏:-)

然后如何配置数据库中的值如何根据环境设置?例如,您的数据库如何知道(或被告知)它位于开发环境中而不是测试/生产环境中?一些相关信息。