在发布时从web.config中删除debug =“true”的好方法是什么?

时间:2010-02-10 16:01:40

标签: visual-studio-2008 msbuild cruisecontrol.net

我使用VS 2008进行开发,并使用CCNet构建,测试和部署我们的应用程序到登台服务器。我希望能够在部署过程中从web.config中删除debug="true"设置。

我知道我可以在machine.config中设置<deployment retail="true"/>,但我并不总是能够访问我们部署的服务器。我可以写一些代码来从web.config中删除设置,但我想知道是否有一种方法可以用msbuild或CCNet开箱即用。

3 个答案:

答案 0 :(得分:6)

您可以使用MSBuild Community Tasks并执行:

<XmlUpdate 
        XmlFileName="web.config" 
        XPath="//configuration/system.web/compilation/@debug" 
        Value="false"/>

或者您可以使用各种内置的Visual Studio转换技术:

  

<configuration xmlns:xdt="...">
  <compilation xdt:Transform="RemoveAttributes(debug,batch)">
  </compilation>
  </configuration>

  • VS2005和2008 Web部署项目允许您替换部分Web配置(as Paddy linked to
  • 不确定,但MSDeploy在此
  • 中具有某种形式的功能
  • NAnt有xmlpoke

注意这是重复的 Setting debug=false in web.config as part of build(我发现太晚了;已经投票结束了这个)

答案 1 :(得分:2)

Microsoft提供了可供下载的Web部署项目 - 这些是在VS中有一些前端的MS构建项目 - 它们允许您交换配置部分。

http://weblogs.asp.net/scottgu/archive/2008/01/28/vs-2008-web-deployment-project-support-released.aspx

答案 2 :(得分:0)

使用 Web.config转换 CCNET 的解决方案:

<tasks>
    <msbuild>
        <executable>C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable>
        <workingDirectory>E:\VersionesCC\Trunk_4\SBatz\Gertakariak_Orokorrak\GertakariakMS\Web</workingDirectory>
        <projectFile>GertakariakMSWeb2.vbproj</projectFile>
        <targets>Build</targets>
        <timeout>600</timeout>
        <logger>C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MSBuild.dll</logger>
        <buildArgs>
            /noconsolelogger /p:Configuration=Release /v:diag
            /p:DeployOnBuild=true
            /p:AutoParameterizationWebConfigConnectionStrings=false
            /p:DeployTarget=Package
            /p:_PackageTempDir=E:\Aplicaciones\GertakariakMS2\Web
        </buildArgs>
        </msbuild>
</tasks>