2012-01-17 50 views
0

我通過複製應排除.cs和其他文件的文件集來發佈網站。我已經從命令行測試了我的NAnt腳本,它工作正常,但是當它從CCNet調用時,它會複製所有文件,完全忽略文件集上的排除項。任何想法這裏有什麼問題?CruiseControl.Net忽略NAnt文件集

從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 

我使用惡性0.91和CCNET 1.6.7981.1

+0

我推薦輸出$ {publish.path}和$ {src.path}的值來查看它們在兩個實例中是否相同。 –

+0

謝謝拉米。我輸出路徑,它們在兩種情況下都是相同的:「src \」和「published \」。該批處理文件與Nant腳本位於同一目錄中。我很確定我已經嘗試過使用完整的路徑,但我會再試一次。 –

+0

完整路徑沒有區別。添加-debug到buildArgs後,我檢查了構建日誌。它告訴我每個被刪除和複製的文件,並且沒有提及.vb文件。但是,當我查看「發佈」目錄時,每個.vb文件都在那裏。即使在NAnt任務中刪除/重新創建「已發佈」目錄時也會發生同樣的情況。我無法理解.vb文件如何偷偷溜進去。即使.svn文件夾也被複制,應該被defaultexcludes =「true」阻止。 –

回答

0

在調試模式下運行該腳本楠和檢查該文件的.vb並沒有實際得到的惡性複製後,我又回到了我的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任務解決了問題。