【发布时间】:2010-03-09 18:00:57
【问题描述】:
我将 CruiseControl.Net 用于我的持续集成过程。使用 ccnet 我构建我的 asp.net 应用程序并将其发布到发布模式的服务器中。但我无法在发布期间在我的 Web.Config 中将 debug="true" 更改为 debug="false"。我能做什么?
【问题讨论】:
标签: continuous-integration cruisecontrol.net
我将 CruiseControl.Net 用于我的持续集成过程。使用 ccnet 我构建我的 asp.net 应用程序并将其发布到发布模式的服务器中。但我无法在发布期间在我的 Web.Config 中将 debug="true" 更改为 debug="false"。我能做什么?
【问题讨论】:
标签: continuous-integration cruisecontrol.net
您可以考虑使用可作为 Visual Studio 构建配置的一部分运行的 Web 部署项目 (WDP)。 WDP 将处理诸如切换调试设置之类的事情,它还会更改任何特定于环境的 web.config 设置。这是WDP tutorial。
【讨论】:
如果您从 ccnet 调用 msbuild 脚本,您可以使用 MSBuild 社区任务项目中的 XmlUpdate 任务。
<XmlUpdate
XPath="/configuration/system.web/compilation/@debug"
XmlFileName="$(WebConfigFileFullPath)"
Value="false" />
如果您有兴趣,我记录了我的构建过程here。
【讨论】:
扩展上面汤姆兄弟的回答,我们使用 MSBuild 社区任务中的 <XmlMassUpdate> 任务来合并特定于部署的 web.config,其中包含多个更改以应用于基础 web.config 以更改调试设置、连接字符串、日志记录配置等。因此,Web 项目包含 web.config 以及从开发机器运行所需的配置。还有 web.Release.config 文件,其中仅包含我们需要应用于 web.config 以在生产 Web 服务器上生成配置的更改。
由于额外文件仅包含应用于web.config 的更改(增量),因此它不是很大。 Visual Studio 在开发过程中会忽略它,CruiseControl.Net 在将其部署到 Web 服务器时会将更改应用到 web.config。
【讨论】: