簡體   English   中英

是否可以設置基礎項目以跨多個ASP.NET MVC項目使用?

[英]Is it possible to set up a base project for use across multiple ASP.NET MVC projects?

我的團隊領導將這一個交給了我,我有點難過。 我們剛剛開始在我們的商店中使用ASP.NET MVC進行Web開發,並且我們希望能夠在多個站點中使用通用設計和功能。

到目前為止,我已經研究了使用公共元素創建自定義模板,但缺點是模板的更新(據我所知)不會自動推送到使用該模板創建的項目。 由於更改自動更新到消費項目是一項要求,自定義模板將不適合我。

我的問題是,是否可以設置一個基礎項目,以便在多個ASP.NET MVC項目中使用,其中基礎的更新會傳播到消費項目? 如果你有這方面的經驗,我當然會欣賞一些方向。 如果這個問題對你來說很簡單,我很抱歉,但這是我第一次真正涉足ASP.NET MVC。

我發現在不同項目之間共享資源的最佳方法是創建自己的Nuget包。 這些可以包含從具有可重用類,枚舉,擴展方法等的類庫到包含控制器,視圖,JavaScript,CSS等的整個Web應用程序。范圍完全取決於您可以從項目中抽象出多少通用性。 然后,您可以設置自己的私有Nuget存儲庫來保存它們,這樣您就不必將它們發布到整個世界。 (雖然,如果你確實創造了一些對他人有益的東西,一定要分享官方的Nuget回購。)

設置一切非常簡單。 我學會了如何創建Nuget包並在一天內設置私人倉庫。 這里有一些資源可以幫助您入門:

  1. 用於創建和部署包的官方Nuget文檔
  2. 使用Package Explorer應用程序通過GUI創建包
  3. 官方Nuspec(包清單文件)參考。
  4. 托管您自己的Nuget供稿
  5. 使用SymbolSource集成創建自己的存儲庫的備用方法

SymbolSource還提供私人回購,遠程托管在他們的服務器上,免費提供。 有些企業環境可能不喜歡讓他們的代碼“在雲端”,但如果你可以使用它,這是迄今為止最簡單的方法。

根據經驗,我工作的公司發現雖然我們的項目中有共同的設計和功能元素,但是不常見的元素可能過於寬泛,因此需要具有某種形式的基礎項目。 使用自定義項目模板也成為維護的噩夢,所以要避免這些。

相反,我們選擇記錄如何為特定設計設置項目,並由團隊負責人跟蹤他們正在處理的特定項目需要哪些位。

如果存在功能重疊,我們已經考慮(但實際上還沒有完成)創建一個具有自己開發生命周期的公共庫,然后設置我們自己的NuGet Server以將公共庫分發給其他項目。 我們還沒有做到這一點,主要是因為我們所工作的項目之間的差異往往足夠大,因此無法保證。

但是從你所描述的聲音來看,NuGet包或類似的東西可能是你的情況。

雖然我認為沒有辦法設置其他所有內容繼承的基礎項目,但您可以很容易地設置一個所有其他人都參考的公共庫項目。 它可以包括您將使用的所有常見事物的基類(例如ControllerBase )。

這樣,更新庫項目將允許將新功能添加到所有其他項目。 您可以配置模板,以便在添加新元素時默認使用公共基類。

根據您引用公共庫(已編譯的dll /鏈接項目引用)的方式,您可以獲得指向特定版本的穩定鏈接或所有項目的即時更新。 我個人更喜歡引用常見的dll而不是項目,因為這允許project A使用比project B更舊的版本。 將A更新到新版本是微不足道的,但它為您提供了一定程度的分離,因此如果B需要更改,您不必浪費資源來保持A正常運行。

另一個額外的好處是,從源代碼控制中檢出舊版本仍然可以保證工作,因為它將與創建時使用的庫版本相關聯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM