不同的配置可以管理visual studio中web.config以外的文件

Mau*_*ark 5 configurationmanager visual-studio visual-studio-2012

我有一个项目需要为许多不同的客户进行测试和部署,而这些客户有时会有不同的需求.它是一个MVVC应用程序,我使用.net MVC,但只有少数部分和部分,如一些部分视图等,其他一切都是使用knockout.js的单页面应用程序.

所以我有不同的web.config文件,但我有一个包含客户端配置的文件,一个.js文件,对于每个客户都是不同的.

现在,如果使用配置管理器在visual studio中进行不同的配置,我会根据我选择的配置获得不同的web.config,这是完美的.

但是有没有办法在项目中为另一个文件获得相同的结果?

例如有一个myfile.nightly.js和myfile.debug.js等等.(这些文件包含配置设置,如页面颜色或徽标或要隐藏的部分,适用于每个不同的客户).

我在预建事件中尝试了这个解决方案:http://www.hanselman.com/blog/ManagingMultipleConfigurationFileEnvironmentsWithPreBuildEvents.aspx

但这是一个非常有用的帖子,我想知道VS2012是否有更实际的内容

jul*_*gon 3

您所讨论的这个功能(在 web.config 的情况下)称为 Xml 转换。不幸的是,Visual Studio 只支持自动转换 web.config 文件,没有其他功能。

SlowCheetah是为了转换您选择的其他 xml 文件而创建的,但它仅适用于 Xml 文件。例如,您可以将其配置为在每个构建上转换文件(通过自定义 msbuild 任务)。

但我不知道有任何转换 javascript 文件的解决方案。

编辑:

也许您可以构建自己的HttpHandler类来服务定制的 js 文件?页面上js文件的链接会指向它,它会为每个客户提供不同的js文件,切换逻辑将在服务器中。

我仍然觉得这是一个糟糕的解决方案(但由于 Web 表单,我可能有偏见),理想情况下您会生成已设置此信息的页面,也就是说,配置可以位于 web.config 文件中,例如,服务器端的控制器可以使用这些设置来个性化页面。

编辑2:

好的。根据最后的评论,我现在明白这是静态配置,即它是特定于部署的,并且不会根据同一网站上的用户进行更改。考虑到这一点,我觉得这不应该是构建过程的一部分,而应该是部署的一部分。

我会认真考虑使用部署工具来根据目标环境自定义文件。Microsoft 自己的发布管理可以使用内置的工作流活动相对轻松地实现这一点。在发布管道中,您可以根据传递给工作流程的任何参数选择所需的 javascript 文件。