6

我学习ASP.Net MVC 2,从PHP和一些Rails的背景,那似乎离我只有一件事来,是你管理像连接字符串的配置设置方式或外部服务的端点。多个环境2

随着PHP框架中使用我以前的公司有对配置文件的标准格式和约定。我的公司能够利用这个功能,以便根据环境变量(在Apache配置中设置)加载不同的配置文件。这使得它可以非常简单和自动地根据环境更改任何配置设置。据我所知,Rails内置了这个功能的一些版本。

我熟悉.Net世界的app.configweb.config文件,但有没有办法根据环境进行这些更改,最好是自动执行,并且具有各种粒度级别?与我以前的配置系统相比,整个配置系统似乎非常贫乏。

我大概可以砍的东西,共同完成了这一点,但我想看看有什么办法人们正在实践中,或者,如果有一些标准的工具,人们所使用。

+0

+1真棒话题 – 2010-11-24 21:39:33

回答

0

很明显,你可以在“Debug”和“Release”模式下运行你的环境。 Rails中的ENV变量和PHP中的类似约定显然是它们的优势之一。就像任何选择一样,这些东西总是一种折衷,就是其中之一。当我在轨道中时,我可以欣赏用适当的宝石等加载你的变量(测试,开发,制作......)的能力。这很棒。当我在rails中时,VS intellisense之间的差异也很大,可能是最好的。

这就是说,一些技巧我见过已编码计算机名特性为适当的连接字符串和等,从而WebConfigs可以轻松地不同的开发人员和服务器等之间传递......

3

web.config transformations

我可能是错的,但我似乎记得,如果在Visual Studio中使用“开始调试(F5)”按钮启动应用程序,它们将不会得到应用,这使得该功能对于大多数人来说显得不切实际使用。

+0

你是对的,它不会当你只是建立应用这些变换。您必须使用`MSBuild`手动运行它,或者从Visual Studio中创建一个包。也许``。csproj`可以被修改以执行转换作为后期构建操作。 – notJim 2010-12-01 18:19:54

0

我个人使用machine.config管理环境的具体设置。该文件包含机器特定的设置。

如果你没有为每个环境专用机器,而是你正在使用在IIS中你可以有位于包含环境特定设置的每个网站的根的根web.config文件不同的网站。

基本上,在这个全局配置文件中,我存储了包含我的SQL Server,Web服务服务器,...的不同环境的名称的键/值对,然后在我的应用程序中使用这些键来构建最终连接字符串,HTTP网页地址,...

一旦这些全局配置设置是否正确,你可以与所有环境中的web.config配置完全相同的应用程序文件。