2008-10-02 58 views
2

這是從以前的問題I have asked引用從SVN構建工件:外部構建在.NET項目

的延續問題,我現在已經在我的項目樹的根/目錄的外部。在這裏我有一個參考另一個項目。我能夠在主項目NAnt腳本中編寫我所有外部的構建。這些結果建立如下:

/外部對象/外部PROJECT1 /建造/ buildartifacts/{的DLL | HTML | JS}

/外部對象/外部項目2 /建造/ buildartifacts/{的DLL | HTML | JS}

這是一切都很好,但現在我很好奇,我的主要項目應該如何參考這些構建工件。例如,假設外部項目構建了一些我的代碼庫所依賴的DLL。我應該只是在構建工件目錄中引用DLL,還是應該實現另一個將這些副本複製到/ thirdparty/libs /文件夾的NAnt任務?

這意味着,我的版本是現在依賴於建立這個外部項目(既可以是內部或第三方)的能力。檢查最新的構建工件集以確保主構建不會因爲依賴構建中斷而中斷嗎?

希望這是不夠清楚。只是寫下來,至少爲我澄清了這個問題:-)。

- 編輯 -

謝謝你們。我想我會實施「結帳修訂」,但由於構建過程非常快,我不會檢查任何構建人工製品。也將不得不弄清楚如何處理外部項目的依賴關係(例如:prototype,swfobject等)。

回答

1

我會說他們建立一次,檢查/ public/ext/some_dependency/ref中的構建工件(顯然,該文件夾的命名取決於你:-))並從那裏引用它們。

我的主要理由是,你幾乎不需要每次你做你的產品的構建時間來建立外部依賴。一般而言,外部依賴應該很少發生變化。此外,當您選擇外部依賴性更改時,您需要嚴格控制,以避免在編碼階段引入不穩定性。

作爲擴展到這一點,我想補充一個單獨的CI的任務,只能建立外部依賴,並在一些外部條件檢查它們在上述文件夾 - 在依賴源文件夾或別的東西提交。

1

我有一個建議(我認爲它來自Mike Mason的語用版本控制書),以引用您的外部特定版本,以便始終獲得相同版本的外部依賴關係,直到您明確選擇改變它。

此時,您可能已經交互式地構建過一次以確保它可以正常工作,因此依靠它每次構建並不是真正的問題,這樣可以避免在構建任務中添加一些間接方法。

如果您選擇讓間接,以及由於某種原因,沒有建立在外部失敗,這有可能會被錯過作爲下一個惡性任務會拿起以前的二進制文件。