代码之家  ›  专栏  ›  技术社区  ›  Jeremy

从CruiseControl.NET调用的MSBuild未获取生成脚本更改

  •  0
  • Jeremy  · 技术社区  · 16 年前

    我们使用的是CruiseControl.NET,它调用MSBuild脚本。在调试构建脚本时,我们会不断进行一些小的更改,并通过在IIS上运行的CruiseControl.NET web控制台运行构建。因为我们只是在测试,所以所有的东西都在一台机器上。

    我注意到,我们在MSBuild脚本中所做的一些更改没有得到响应。有时他们推通过,有时服务器是一些过时的版本。有时重启IIS服务就可以做到这一点。有时甚至不起作用。

    有人知道背景中发生了什么吗?我们是否需要为web应用清除一些缓存?它可能在哪里?

    编辑:澄清一下,我所有的东西都在一台机器上,因为我还在测试阶段。所以我认为源代码控制不应该成为一个问题。我的ccnet.config只调用MSBuild目标。下面是一个简化的示例:

    <project>
        <tasks>
            <msbuild>
                <executable>$(netFrameworkRoot)\MSBuild.exe</executable>
                <projectFile>C:\MyProject\ProductBuild.proj</projectFile>
                <targets>BuildProject</targets>
            </msbuild>
        </tasks>
    </project>
    

    ProductBuild.proj是一个手工编码的MSBuild脚本,用于构建许多其他.NET解决方案,并使用vdproj打包安装程序。

    在CruiseControl上运行构建时,对构建脚本所做的更改似乎并不总是有效。我想重启CCNet服务是最安全的,但我希望我不必中断当前正在运行的构建。

    1 回复  |  直到 16 年前
        1
  •  1
  •   Alex    16 年前

    “通过在IIS上运行的CruiseControl.NET web控制台运行构建”据我所知,web控制台不进行任何构建。它会向ccnet.exe或ccservice.exe发送一条消息,该消息始终在端口21234上运行和侦听(除非指定到另一个端口),但为了解决您的问题,您的生成项目是否总是最新的?您的MSBuild文件是否在源代码管理中?您正在使用什么源代码管理?是否正在更改生成服务器上工作区中的MSBuild文件?您应该在这里发布一份项目副本,以便我们可以尝试确定错误?我可以告诉您,就CruiseCOntrol而言,IIS和web缓存与实际编译无关。除非你说的是你正在建设的项目需要IIS?