是否可以将Web.config转换与发布配置文件链接?

时间:2010-06-21 19:41:05

标签: asp.net .net visual-studio-2010 web-config-transform msbuild-wpp

目前,我可以根据构建配置轻松设置Web.config转换,例如对connectionString=server;..使用DebugconnectionString=./SQLExpress;..使用Release

但是有可能基于Web发布配置文件进行一些Web.config转换吗?即对connectionString=server1;..使用Server1connectionString=server2;..使用Server2

3 个答案:

答案 0 :(得分:5)

我们将所有特定于机器/配置文件的配置保存在单独的配置文件中,然后使用configSource将它们包括在内......

    <connectionStrings configSource="cstrings.config"/>

这样Web.config是相同的,不需要任何转换。我们为连接字符串,smtp设置和应用程序设置执行此操作。

我们版本控制Web.config和“机器特定”文件,如cstrings.config.production,cstrings.config.staging等。

一旦拥有了这种结构,就可以轻松地为不同的配置文件生成图像。我们在每台机器上都有部署脚本,用于读取环境变量并进行适当的部署。例如,登台服务器构建脚本将cstrings.config.staging复制到cstrings.config等。

答案 1 :(得分:0)

我认为发布配置文件独立于构建配置文件,这有点遗憾,因为您可能很容易意外地将调试配置部署到生产服务器。

但是,如果您正在使用MSDeploy,则可以在其中修改web.config。有关详细信息,请参阅MSDeploy - Changing Connection string parameter after deploying the package

答案 2 :(得分:0)

可能会有一种略微不同的方式来做到这一点。

在生产服务器上,为每个生产计算机上的c:\ windows \ system32 \ drivers \ etc \ hosts文件中的customdb创建一个虚拟条目。每个指向您希望该计算机使用的数据库。然后你只需要指向connectionString = customdb;适用于所有生产服务器。

唯一的缺点是你需要访问hosts文件,它需要你使用数据库。

希望这有帮助