[英]How to correctly generate a complex externals structure with sharpsvn?
我使用subversion有一個非常復雜的存儲庫結構。 其中很大一部分與我的團隊的局限性,安全性要求以及項目的依賴性有關。 這里使用的結構因此不是可選的,不能改變。
存儲庫結構包含以下模式:
root-|- main -|- branches
| |- tags
| |- trunk - main - plugins
|
|- modules -| - module1 -|- branches
| |- tags
| |- trunk - module1 - plugins - plugin1
| |- modules - ...
|
| - module2 -|- branches
| |- tags
| |- trunk - module2 - plugins - plugin2
| |- modules - ...
每個外部的源是一個pluginX文件夾。 目標是低一級的主干的插件文件夾(或主要的插件文件夾)。 遺憾的是,API的文檔幾乎不存在。 我懷疑我需要以某種方式使用propset函數但是如何指向特定的目標目錄和源目錄沒有在我能夠找到的任何地方描述,也沒有找到任何示例。
編輯:每個模塊可以單獨拉出並獨立於根項目進行處理。 我不能只為此使用root。 天啊,我甚至無法對這個問題做出惡意回應!!
在'root'文件夾中創建文件夾build
並使用relative path
引用解決方案中的項目,然后將其output folder
所有項目配置為build\\xxx folder
,所有輸出文件夾也是relative path
。 在主程序中,再次使用相對路徑配置程序集綁定 。 使用這種模式,無論誰下載repo,他們都可以將項目編譯到相同的根文件夾,並使用相同的configure進行調試。
對於非常復雜的依賴,例如A => B => C => D,第一次打開解決方案A,如果B / C / D未編譯且未引用,則A將顯示參考警告,您必須打開並編譯B&C&D,然后A將工作。 但通常情況下,我們應該將B / C / D添加到解決方案A中,因此,在我們第一次打開它時不會再出現錯誤。
有時候,某些源代碼並不是針對所有開發人員開放的,所以他們只能獲得一個已編譯的dll,對於那些dll,我們需要另一個文件夾(如“工具”),其中包括源代碼服務器中的所有已編譯程序集。 我們在解決方案中添加帶有relative path
file references
,並將它們配置為"Copy to local"=true
對於許多項目,我們將使用post-build或pre-build事件從某個地方加載或復制文件,所有這些都必須是相對路徑。
回答我自己的問題。 我正在使用的庫有一個函數,在給定該文件夾的絕對路徑的情況下,為本地系統中的給定文件夾設置外部。 該庫是圖書館C版本的一個端口,顯然作者只是假設人們“只知道”在那里看。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.