我通过复制一个应该排除.cs和其他文件的文件集来发布网站。我已经从命令行测试了我的NAnt脚本并且它工作正常但是当它从CCNet调用时,它会复制所有文件,完全忽略我的文件集上的排除。任何想法在这里出了什么问题?
从CruiseControl.Net调用我的NAnt构建文件。
<tasks>
<nant>
<executable>$(nant.exe)</executable>
<baseDirectory>$(build-dir)\$(project-dir)</baseDirectory>
<buildArgs></buildArgs>
<nologo>true</nologo>
<buildFile>aview-dev.build.xml</buildFile>
<targetList>
<target>go</target>
</targetList>
<buildTimeoutSeconds>300</buildTimeoutSeconds>
</nant>
</tasks>
NAnt构建文件的大块似乎不起作用(我的'发布'步骤的一部分)。
<copy todir="${publish.path}" includeemptydirs="false">
<fileset basedir="${src.path}" defaultexcludes="true">
<include name="**/**" />
<exclude name="**.csproj*"/>
<exclude name="**.cs"/>
<exclude name="**.vb"/>
<exclude name="**.sln"/>
<exclude name="**/obj/**"/>
</fileset>
</copy>
直接从命令提示符运行时,相同的NAnt文件可以正常工作。
nant -buildfile:test.build.xml -debug
我正在使用NAnt 0.91和CCNet 1.6.7981.1
答案 0 :(得分:0)
在调试模式下运行NAnt脚本并检查.nt文件实际上没有被NAnt复制之后,我又回到了CCNet配置。我意识到我在ccnet.config中定义了一个buildpublisher块,并在我的ccnet项目文件中使用了它。在NAnt任务正确复制文件后,buildpublisher任务重新复制了所有内容,没有任何过滤器(包括.vb文件,.svn目录等)。
<buildpublisher>
<sourceDir>C:\myprojects\project1\src</sourceDir>
<publishDir>C:\myprojects\project1\src\published</publishDir>
<useLabelSubDirectory>false</useLabelSubDirectory>
<alwaysPublish>false</alwaysPublish>
</buildpublisher>
删除buildpublisher任务解决了问题。