需要重新启动CruiseControl.NET服务以获取项目配置文件中的更改。
我发现这非常烦人,不确定它是否是一个错误或它的工作方式。
有没有办法在人们的经历中克服这个问题?
答案 0 :(得分:10)
如果项目在与ccnet.config不同的文件中分隔,则除非触摸实际的ccnet.config,否则需要重新启动该服务。
我们在ccnet.config中为我们的项目使用ENTITY和SYSTEM文件引用,所以我们在同一条船上。我很乐意为更容易的项目维护付出代价,因为重新编写脚本很容易:
net stop CCService
net start CCService
IISRESET
如果您希望完全自动执行此操作,并将项目置于源代码管理之下,那么只要触摸项目文件,就可以触发更新并重新启动。
答案 1 :(得分:5)
如果您使用的是预处理器,则在1.4.4之前的CC.Net中存在一个错误,包括它在修改包含的ccnet.config文件时没有重新加载配置。
这是我报告的一个错误,它已在CC.Net 1.4.4及更高版本中修复。
另外,请记住,如果构建正在运行且配置发生更改,则在构建处于空闲状态之前不会发生。
答案 2 :(得分:2)
您如何更新配置文件?用手?我总是认识和调整。您的配置文件是否在源代码管理中并设计为将其下拉并替换文件?这对我来说需要一脚。我最终修复它的方法是让我的项目将其下载到一个单独的文件夹中。我在它上面调用ccnet.exe -validate以确保它格式正确,然后我将它复制到当前配置文件的ontop上。 CC.NET识别新配置中的更改和加载
例外:如果cc.net当前正在运行项目,则在该项目完成之前,它将无法识别这些更改。
如果您的ccnet.config有错误,它将无法识别更改并继续运行它存储在内存中的旧版本。 (但是当CC.NET重新启动时,它会尝试解析填充错误的配置并阻塞。
希望这会有所帮助!!
答案 3 :(得分:2)
您是说您使用的是链接文件,即ccnet.config文件包含指向独立项目文件的链接。
如果是这样,那么它们就不会被拾取,文档中提到它不会查看子文件。
在内部,我们修改了CruiseControl.net,以便我们的ccnet.config可选地是一个目录 - 我们可以将项目配置文件的快捷方式删除到该目录中。我们将监视放在目录,目录中的文件或快捷方式以及快捷方式的所有目标上。这意味着我们在ClearCase中有我们的项目配置文件,只需将快捷方式放入ccnet.config目录。
我只花了半天左右的时间从1.2移动到1.4.2将我们的更改放入新版本供我们内部使用。我们不拥有我们的代码,我们的客户端也是如此,所以它必须保持内部:(
答案 4 :(得分:1)
我从来没有经历过这个。每当我更改配置文件时,CruiseControl.NET服务似乎会自动重新读取它们。
我正在使用CC.NET 1.3版。
<强>更新强>
在服务的配置文件(ccservice.exe.config)中,有一个设置可以启用/禁用观察ccnet.config文件的更改:
<add key="WatchConfigFile" value="true"/>
确保将其设置为true。