.NET用于开发和发布的不同应用程序设置

时间:2010-03-12 12:16:20

标签: c# application-settings

我正在使用VS2010 C#.NET 3.5和应用程序设置(Settings.settings文件)。我想要做的是为我的开发和生产环境设置不同的设置,而不必使用条件语句检查调试模式来丢弃我的代码。这个问题的常见方法是什么?

7 个答案:

答案 0 :(得分:5)

或者你可以创建单独的配置文件并调用它们:

Release.settings

Debug.settings

然后设置条件生成事件,将相应的.config文件复制到Settings.Settings


if $(ConfigurationName) == Debug xcopy debug.settings settings.settings
if $(ConfigurationName) == Release xcopy release.settings settings.settings

答案 1 :(得分:1)

假设您的意思是设置的值,我认为最好的方法是将所有生产环境值放在设置文件的注释中。或者仅在部署应用程序时设置它们。

在.Net中没有真正的内置机制,如果这就是你所追求的。

在我目前的工作中,我们有一个小命令行工具,它将为给定环境设置所有值。配置在数据库中完成。

在我之前的工作中,我们从未将配置文件复制到部署目录,而是在需要时手动更改文件。

答案 2 :(得分:1)

我们从不在生产系统上覆盖我们的web.config文件。如果添加了其他设置/键,我们会在发布时将其粘贴。

答案 3 :(得分:1)

如果您使用Web部署项目,则可以对其进行设置,以便替换web.config的不同部分。您可以在此处详细了解它们:http://weblogs.asp.net/scottgu/archive/2005/11/06/429723.aspx

我们实际采用的另一种方法是拥有多个web.config文件 - 每个环境1个(例如web.config,web.config.production)。然后,当我们构建部署时,我们使用msbuild自动将web.config.production作为web.config交换。

答案 4 :(得分:0)

我认为这是缺少xxx.config文件。这就是我使用自己的配置管理器的原因,它可以在安装/执行应用程序的每台机器上使用不同的配置。

答案 5 :(得分:0)

我们使用NAnt脚本构建我们的解决方案,替换配置文件中的设置值,运行测试并发布。

一旦你设置了一次或两次,这是相当直接的。

答案 6 :(得分:0)

您可以有条件地在构建过程中包含项目,例如

<ItemGroup Condition=" '$(Configuration)' == 'Debug' " ...

请参阅https://stackoverflow.com/a/2093289/254109