0

與大多數人一樣,我們使用第三方庫。我們保留在VCS中的許多資源。如何引用不在同一根的項目

當前,如果這些庫已更新,我們需要手動提取源並重建二進制文件。

我試圖找到一種方法,而不是從使用它們的各種解決方案中引用它們,以便在您拉取相關項目時自動從源代碼管理中拉取它們,並在它們過期時自動生成。能夠使用提供的源代碼進行調試也是很好的。

我遇到的第一個問題是這些庫與依賴項目不在同一個解決方案根目錄中。例如。

\Libraries 
\External 
    \Lib1 
    Lib1.sln 
\Products 
\Product1 
    Product1.sln 

試圖添加Lib1.csprojProduct1的解決方案給我的警告:

,你正試圖添加到源代碼管理的項目可能會導致其他 源代碼控制用戶很難打開此解決方案或 獲得它的更新版本。爲避免此問題,請從解決方案中其他源受控項目的綁定根目錄(C:\ depot \ Products \ Products1) 以下的位置添加項目 。

如果我忽略這一點,那麼我可以正確設置構建依賴關係,但它仍然不允許一次拉動整個源代碼樹。

我想知道其他人如何設置第三方庫,特別是當有源代碼時。 (我們使用的是Perforce,但我想這個問題與任何VCS都有關)

+0

我對Perforce並不熟悉,但我會做的是將所有第三方庫的源代碼放在VCS的一箇中心位置,然後將它們鏈接到需要使用類似[SVN的外部(http://svnbook.red-bean.com/en/1.7/svn.advanced.externals.html);您可以在實際結帳中的任何地方指定外部結賬地點。這樣,當您拉下項目/解決方案的源代碼時,第三方源代碼也會被拉下來,並且您可以像往常一樣對它們進行項目引用。 –

回答

1

perforce解決這個問題的一種方法是將所有模塊/第三方軟件重新用於單獨的位置(倉庫)例如「//共享」或類似。

產品(SCMS/perforce中的樹)可以通過將所需模塊映射到工作區中來「鏈接」所需模塊。在perforce中,你可以通過clientviews來做到這一點。 如果你有很多人在處理很多產品,你需要一個簡單的機制來正確設置一個產品的個人工作區(不需要開發者手動設置他們的clientview)。 實現這一目標的一種可能性是一個小型自行編寫的工具/腳本,該工具/腳本根據產品根目錄中的模板設置工作區並準備個人客戶端視圖,該模板定義「//共享」倉庫中的模塊需要映射到客戶端工作區中的哪個位置。

我們正在使用這種做法,因爲多年來,它工作正常。危險在於客戶端視圖可能變得非常複雜。

相關問題