2012-10-23 45 views
4

這個問題很煩人,現在我一直在抨擊它幾個小時。我想要做的是使用CCNet中的配置預處理器創建一個調用CCNet任務的XML元素。我認爲我從根本上誤解了一些東西。Cruise Control .NET:使用cb:使用多個參數定義

我現在是這樣的:

<cruisecontrol xmlns:cb="urn:ccnet.config.builder"> 

     <cb:define name="myBuild"> 
      <devenv> 
       <solutionfile>"$(projPath)"</solutionfile> 
       <configuration>"$(releaseMode)"</configuration> 
       <buildtype>Rebuild</buildtype> 
       <executable>C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe</executable> 
       <buildTimeoutSeconds>2400</buildTimeoutSeconds> 
       <version>VS2008</version> 
      </devenv> 
     </cb:define> 

然後使用它,我做的一個項目中的以下:

<cb:myBuild projPath="C:\sample.sln" releaseMode="Release" /> 

我得到的錯誤是

[CCNET服務器:錯誤]內部錯誤:引用未知符號'releasemode'

然後是ThoughtWorks dll的巨大堆棧跟蹤。

我的主要困惑在於爲什麼定義中的「$(projPath)」工作正常,但「$(releaseMode)」沒有。事實上,如果我在項目中刪除對「releaseMode」的所有引用,CCNet接受該腳本甚至構建它們。但是,這並不起作用,因爲並非所有的解決方案都有「釋放」模式,有些是專門命名的(出於某種原因,不要問我)。

任何有關正在發生的事情的幫助,更重要的是,如何解決此問題將非常感激。

我正在運行版本1.8.2。此外,我們也計劃將實際構建腳本移至NANT,但這是構建過程漫長道路上的第一步。

+0

可能是在黑暗中拍攝的,但是當您爲參數使用不同的名稱時會發生什麼?在包含中更改它們的順序? – skolima

+0

第一眼看上去一切都很美好。將調查... –

+2

我將您的配置代碼片段複製到正在運行的CCNET服務器(1.8.2版)的配置中,並且所有內容都按其應有的原樣運行。所以問題不在配置 –

回答

2

我構建了從零件的簡單配置文件,但它完美的作品:

<cb:define name="myBuild"> 
    <devenv> 
    <solutionfile>"$(projPath)"</solutionfile> 
    <configuration>"$(releaseMode)"</configuration> 
    <buildtype>Rebuild</buildtype> 
    <executable>C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe</executable> 
    <buildTimeoutSeconds>2400</buildTimeoutSeconds> 
    <version>VS2008</version> 
    </devenv> 
</cb:define> 

<project name="a"> 
    <tasks> 
    <cb:myBuild projPath="C:\sample.sln" releaseMode="Release" /> 
    </tasks> 
</project> 

不知怎的,我懷疑realted到服務器上的任何其他配置設置錯誤。

要簡化故障排除,請使用CCValidator.exe如果您還沒有這樣做。這樣你就可以減少潛在的問題來源。你可以在你的CruiseControl.NET\server文件夾中找到它。嘗試打開你的配置文件,看它是否顯示任何錯誤。

如果是這樣,嘗試註釋掉或刪除配置的所有部分,使其儘可能小,同時仍然重現問題。如果仍然無法解決問題,請將該配置發佈給其他人查看。

相關問題