我希望对围绕使.NET应用程序配置环境中立的最佳实践有所了解。
背景。有些背景知识。我来自Java世界,而不是.NET世界,而在Java中,我们可以做一些事情来构建环境中立的包。它们通常基于以某种方式抽象配置。以下是一些例子:
我在Java中看到的另一种方法是构建时方法,您可以使用Ant(令牌替换)或Maven(构建配置文件)来构建特定于环境的包。我不喜欢这种方法,因为我非常喜欢部署完全相同的软件包来测试和生产。但这是我见过的一种方法。
期望的解决方案。我假设在.NET中有一些类似的策略可以将配置(以及扩展包含的包)与其环境分离。
理想情况下,我想要一个解决方案,允许我保持与应用程序密切相关的非环境配置,只将环境内容外部化。回到Java示例,很多时候“配置”实际上是开发人员控制的东西,例如包括用于页面装饰的Sitemesh servlet过滤器,依赖注入或应用程序连接,映射这样的MVC控制器方法请求URI,等等。我不想被外部化。但加密密钥,数据库连接字符串,日志级别等等,是的。
答案 0 :(得分:4)
默认情况下,.NET可执行文件和Web应用程序实现.config文件,它们完全按照您的描述进行操作。有一个完整的命名空间System.Configuration处理.config文件。
在App.config和Web.config上查找参考资料。 App.config是可执行文件的默认配置文件的通用术语,名为foo.exe.config,其中foo.exe是可执行文件的名称。 Web.config适用于Web应用程序。