摘要:CCNet 1.0 RC1已经发布有些时间了,从进度看1.0正式版应该很快就会发布了。 CCNet支持直接使用Visual Studio IDE编译,单从编译的角度讲使用devenv task比写一个nant的build文件简单,但是不是每一台用来做持续集成的机器都会装Visual Studio,而且nant可以做更多的事情。<devenv solutionfile="myproject.sln" configuration="debug" /> 在nant中如果使用solution来做编译,可能会遇到.net 1_x sdk不可用的错误,这是因为没有安装.Net SDK你可以检查注册表中的sdkInstallRootv1.1项来检查机器上有没有装SDKHKML\Software\Microsoft\.NETFramework\sdkInstallRootv1.1如果安装SDK后还会有该错误发生,可以试着把.Net SDK的Bin目录添加到系统Path中,并且在NAnt.exe.config中指定所需的.Net 版本 CCNet从0.9.1开始, WebDashboard新增了一个NAnt Timing Report,NAnt Timing Report可以显示NAnt每一个target的执行时间信息,不过需要NAnt 0.85 RC3支持。 在nant中用exec调用nunit等工具需要注意,如果命令行参数中含有文件路径,而且路径名含有空格,需要将文件路径用双引号括起来如果有些程序实在处理起来太麻烦,比如NCover,可以把涉及到的文件copy到一个路径不含空格的临时目录中,处理完后再删掉 nant中调用fxcop时通过/p制定.FxCop文件灵活性更大一些,因为你可以在.FxCop中作一些很复杂的设置,单靠命令行做这些设置太繁琐,如果项目会引用到其他的项目,需要用 /d参数来指定路径<target name="fxcop" > <exec program="${fxcop.executable}"  commandline="/p:${workingdir}\project.FxCop /o:${artifactdir}\results-fxcop.xml " failonerror="false"/></target> 在nant中支持用task nunit2直接调用nunit,但是用exec执行可以忽略nunit版本的影响,更方便些 在持续集成的过程中会产生很多文件,比如nunit的结果,fxcop的结果,一个好的实践是设置ccnet的artifactDirectory属性,把这些文件全部放到artifact目录中,在nant的build文件中也可以访问到artifactDirectory,ccnet会把下列参数通过命令行的形式传递给nantLabelCCNetBuildConditionCCNetIntegrationStatusCCNetLabelCCNetLastIntegrationStatusCCNetProjectCCNetBuildDateCCNetBuildTimeCCNetArtifactDirectoryCCNetWorkingDirectory 在CCNet的Dashboard report中默认是支持simian的,但是simian是要钱的,要钱俺们是不用的,可以找一个免费的替代的。 如果你使用了其他ccnet Dashboard没有默认支持的程序,可以通过修改dashboard.config来让这些程序的结果显示在Dashboard中比如要显示Vil的分析结果<xslReportBuildPlugin description="Vil Report" actionName="VilBuildReport" xslFileName="xsl\vil.xsl"/> vil也不是完全免费的,如果分析的assemblies超过100个type需要申请key,vil的结果还没看明白...[阅读全文]