从CruiseControl.NET调用的MSBuild不会获取构建脚本更改

时间:2009-02-06 03:05:55

标签: msbuild cruisecontrol.net

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

我注意到我们在MSBuild脚本中做的一些更改没有被选中。有时他们会推进,有时服务器是过时的几个版本。有时重启IIS服务就可以了。有时甚至不行。

是否有人知道背景中发生了什么?我们必须为网络应用程序清除一些缓存吗?它可能在哪里?

编辑:为了澄清,我所有的东西都在一台机器上,因为我还在测试阶段。所以我不认为源控制应该是一个问题。我的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 个答案:

答案 0 :(得分:1)

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