2009-09-14 63 views
2

我負責開發和維護用於構建我們的產品應用程序的一組通用框架程序集。這些組件相對較新,並且在實現新功能時處於不斷變化的狀態等等。因此,它們經常被重建和重新分配並不罕見。我預計這會隨着議會的穩定而下降,但這是今天的情況。如何引用仍在開發中的共享程序集(.NET)

現在,程序集被放置在一個公共文件夾中,開發項目可以引用相同的程序集。應用更新與替換文件一樣簡單,開發項目在下次加載和構建時自動獲取更改。

我遇到的問題是,我們可能有幾個構建在框架上的程序集「層」 - 例如,我們有一個由所有應用程序共享的Core庫和一個引用Core並由所有Server應用程序共享的服務器庫。每次更新框架程序集時,所有的依賴關係都必須重新構建,這是一項非常大的任務。我不相信我可以使用GAC,因爲這會要求所有開發人員在每次發佈新版本時都更新其系統。

我已經調查出版商政策,但有一些疑問,這將解決我的問題的幾個原因:

  • 原因之一,我不希望我每次重建要創建這個文件我框架程序集 - 有沒有辦法讓這個過程自動化?

  • 我不清楚它是否需要組件進入GAC。正如我所說的,每次我們發佈新版本的程序集時,我都不想強迫我的開發人員重新安裝,更新等。

  • 我對網絡設置和配置沒有任何控制權,因此有必要通過將文件放置在網絡共享中來避免整個「信任」問題。此外,我們的許多開發人員都以有時連接的方式工作,我們希望在斷開連接時可以使用這些文件。

目標是讓我們的應用程序開發人員更新這些程序集,使他們消耗它們。在安裝應用程序時,我們無疑將這些程序集安裝到目標機器上的GAC中,但我們不希望爲了開發目的而這樣做。將項目包含在每個應用程序的解決方案中也是不合理的,因爲它們是由不同團隊開發的。

我無法想象自己在這些需求中孤身一人,希望有人可以分享他們的經驗和智慧來指導我解決問題。謝謝!

回答

0

NuGet已經解決了這個問題。通過從我們網絡上的私有存儲庫分發作爲NuGet包的共享程序集,框架等,我們可以輕鬆發佈更新並適當地將它們應用於客戶端代碼。

1

您不一定需要將程序集安裝到GAC中 - 您的設置中沒有任何程序需要這樣做。

這裏的主要問題是確保程序集強制重建所有依賴項,並將所有這些依賴項都放在共享位置。

這裏最簡單的選擇可能是建立一個構建服務器,只要其中一個共享程序集被更新,就可以重建所有的東西。這也有一個好處,就是可以在構建時潛在地運行其他「腳本」,例如進行代碼度量,靜態代碼分析等,只要簽入內部版本。

然後,您可以讓構建服務器將所有內容到一個共享的位置。如果項目從共享位置引用,並明確表示不限制爲特定版本,則所有內容都應該正常工作。

+0

退房http://stackoverflow.com/questions/tagged/continuous-integration – TrueWill 2009-09-14 22:37:15

+0

是的,CI使這很容易。 – 2009-09-14 23:16:57

相關問題