【ASP.NET MVC系列】淺談NuGet在VS中的運用


ASP.NET MVC系列文章

【01】淺談Google Chrome瀏覽器(理論篇)

【02】淺談Google Chrome瀏覽器(操作篇)(上)

【03】淺談Google Chrome瀏覽器(操作篇)(下)

【04】淺談ASP.NET框架   

【05】淺談ASP.NET MVC運行過程    

【06】淺談ASP.NET MVC 控制器   

【07】淺談ASP.NET MVC 路由   

【08】淺談ASP.NET MVC 視圖 

【09】淺談ASP.NET MVC 視圖與控制器傳遞數據

【10】淺談jqGrid 在ASP.NET MVC中增刪改查     

【11】淺談ASP.NET 頁面之間傳值的幾種方式

【12】淺談緩存技術在ASP.NET中的運用       

【13】淺談NuGet在VS中的運用      

【14】淺談ASP.NET 程序發布過程           

【15】淺談數據注解和驗證           

【16】淺談依賴注入

【17】淺談表單和HTML輔助方法

【18】淺談基於APS.NET身份驗證

【19】淺談ASP.NET MVC 模型

【20】淺談ASP.NET MVC 單元測試

【21】淺談ASP.NET MVC網絡安全;

【22】淺談ASP.NET MVC八大類擴展

【23】再談ASP.NET MVC Routing

【24】淺談ASP.NET 高級話題

【25】淺談大型ASP.NET MVC項目(含DEMO)

【26】下一系列:ASP.NET WebAPI


 

 一     概述

在我們講解NuGet前,我們先來看看一個例子。

1.例子:

 假設現在開發一套系統,其中前端框架我們選擇Bootstrap,由於選擇Bootstrap作為前端框架,因此,在項目中,我們需要引入Bootstrap相關文件,大致會執行如下操作。

步驟一:下載Bootstrap文件

輸入Bootstrap官網域名   http://v3.bootcss.com/

 輸入域名,進入官網

步驟二:選擇合適的版本,下載Bootstrap包

步驟三:將包引入到項目中

 

關於將Bootstrap包引入到Project中,過程似乎比較麻煩,更可怕的的是,當在項目中的Bootstrap包需要更新時,需要做重復的工作,這是非常繁瑣的,很好的是,VS自帶的NuGet包管理器很好地

幫助我們解決了此類問題。

2.何為Nuget包管理器?

對於.NET和VS而言,NuGet是一個.NET包管理系統,它可以很容易地響應運用程序中添加、更新和刪除外部庫文件及其依賴。

除此之外,我們可以通過創建包,發布包實現包之間的共享,使共享得以實現。

站在微軟的角度:要盡可能地嘗試,不要指望Microsoft為我們提供所需要的每一段代碼,在.NET平台上進行開發的開發人員多大數百萬甚至上千萬,而每一個開發人員都有其獨特的技術和有待解決

的問題,等待Microsoft去解決每個開發人員的每個問題,既形不成規模,也沒有意義。值得慶幸的是,他們可以通過網上發布的一些庫萊解決他們或他們客戶遇到的問題。然而,面對網上的這些有

用的庫我們面臨三大挑戰:發現,安裝和維護。但慶幸的是,NuGet卻很好地解決了此類問題。

二    將包添加到庫

將包添加到庫,有許多方式,常用方式為Manage NuGet Package 和 Package Manager Console,下面將結合VS2017和基於ASP.NET MVC模板講解該兩種方式。

(一)Manage  NuGet  Packages

1.准備好VS2017開發環境,並用VS的MVC模板創建一個默認項目:NuGetDemo

分析:

細心的你會發現,在上圖中出項了packages.config文件,其實,它就是NuGet包的配置文件,因為我們在選擇基於MVC模板創建項目時,默認的引入了第三方庫文件,如Bootstrap,Jquery等;

2.打開NuGet包管理器

引用=>管理Nuget程序包

 

3.打開NuGet包管理器后,我們可執行如下操作

(1)瀏覽包  (2)查看當前系統已安裝包  (3)更新包  (4)在搜索框中搜索包

4.查看包的詳細信息

我們以log4net為例

分析:

包的基本信息

 5.安裝

在安裝AnyLog.Log4Net之前,先選擇好安裝版本,然后再安裝。

6.查看安裝情況

(1)查看控制台輸出安裝信息情況 

 (2)查看NuGet包已安裝情況

(3)查看項目引用情況

(4)查看packages.config文件

7.更新包

NuGet包管理器不僅能幫助我們安裝包,而且還能幫助我們維護包,我們可以借助NuGet包管理器來更新包。

注意:當我們更新包時,這個操作也會更新該包的所以依賴,以確保只安裝依賴的兼容保本。

在以下例子中,我們在項目NuGet中安裝了Log4net  2.0.3版本,現在,我們將其更新都最新版本2.0.8,選擇“更新”。

點擊確認。

注意,此步會更新運用程序中與Log4net相關所有內容。

查看更新結果

 

 8.包恢復

NuGet默認的工作流程是把包文件夾提交到版本控制,這樣做的一個好處是可從版本控制檢索解決方案,以確保構建解決方案的每個包都能夠安裝,而且這些包還不需要從其他位置檢索。

但是,這樣做也是有弊端的,Packages文件夾不是VS解決方案的一部分,因此,通過VS集成管理版本控制的開發人員需要進行一個額外的步驟以確保Packages文件夾能夠提交。

(1)TFS可以自動提交Packages文件夾

(2)分布式版本控制系統(如Git),不建議把Packages文件夾提交到版本控制,因為分布式版本控制系統不擅長處理二進制文件,如果項目中大量的包都有變化,分布式版本控制系統庫就會

變得很龐大。

可喜的是,NuGet 1.6引入的包修復功能來處理這些問題,這樣就支持一個新的個工作流程,我們就不需要把Packages文件夾提交到源代碼控制了。

這個過程需要手動執行幾個步驟:對每個項目都需要執行單獨的一步操作,以啟用包恢復(在NuGet2.0~2.6中,每個開發人員還需要配置VS來允許包恢復)

注意:

         現在NuGet包恢復時自動啟用的,但是在VS的Package Manager設置中使用下面兩個選項,可以禁用包恢復功能:

          a.允許NuGet下載缺少包;

          b.在VS中構建運用程序時,自動檢查缺少的包;

通過NuGet 2.7 自動包恢復功能。

(二)Package Manager Console

Package Manager Console是Visual Studio 中基於PowerShell的控制台,不僅提供了強大的功能來查找和安裝包,而且還支持Manager NuGet Packages對話框不支持的一些功能。

1.啟動控制台

工具=>NuGet包管理器=>程序包管理器控制台

2.查看當前項目已安裝的包

在控制台中輸入Get--Package,可以查看當前項目已安裝的包

拓展:

(1)以前版本,可以通過以下命令來過濾包

Get-Package -ListAvailable -Filter Route

(2)可以采用如下命令代替Get-Package -ListAvailable -Filter 命令

Find-Package [-Id]

 

3.安裝包

在控制台中通過:Install-Package 包名  

下圖中,我們在項目中安裝Log4net,因此輸入Install-Package Log4net,由於我已在項目中安裝了Log4net,因此提示已經安裝。

拓展:

(1)PowerShell命令的支持擴展功能,相當於智能感應。輸入命令部分字符,按Tab鍵就可以查看輸入的內容,從而實現智能感應。

(2) PowerShell支持復合命令,比如通過將一個命令管道傳輸到另一個命令。

如下命令向解決方案中每一個項目安裝一個包。

Get-Project -ALL | Install-Package  log4net

(3)PowerShell也支持動態添加新命令

PowerShell強大之處在於,安裝的一些包可以為shell添加新命令。

(三)其他方式啟動NuGet

 如在項目名稱中添加,這里不論述,核心內容還是在如上的(一)和(二)部分。

 4.關於包源和項目的選擇

 通過選擇程序包源右邊的齒輪,即可查看該包及對包的基本操作

5.NuGet包管理器概述

(1)NuGe包管理器基本界面

在控制台操作中,由兩大部分組成:常規和程序包源

(2)程序包源概述

拓展:

在Manage  NuGet  Packages 操作包方式中,與如上對應的操作

例子講解:

下面我們講解基於如上兩種模式添加autofac包的操作過程

Manage  NuGet  Packages 方式

控制台操作方式

(1)找到autofac包的NuGet地址

(2)添加autofac包

三    創建包

篇幅有限,以后專門寫一篇文章概述......

四    發布包

篇幅有限,以后專門寫一篇文章概述......

五    參考文獻

【01】ASP.NET MVC5 高級編程(Jon Galloway,Brad Wilson,K.Scott Allen,David Matson ,孫遠帥 譯)

六   版權區

  • 感謝您的閱讀,若有不足之處,歡迎指教,共同學習、共同進步。
  • 博主網址:http://www.cnblogs.com/wangjiming/。
  • 極少部分文章利用讀書、參考、引用、抄襲、復制和粘貼等多種方式整合而成的,大部分為原創。
  • 如您喜歡,麻煩推薦一下;如您有新想法,歡迎提出,郵箱:2016177728@qq.com。
  • 可以轉載該博客,但必須著名博客來源。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM