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

来源:https://www.cnblogs.com/wangjiming/archive/2018/01/03/8177821.html
-Advertisement-
Play Games

一 概述 在我們講解NuGet前,我們先來看看一個例子。 1.例子: 假設現在開發一套系統,其中前端框架我們選擇Bootstrap,由於選擇Bootstrap作為前端框架,因此,在項目中,我們需要引入Bootstrap相關文件,大致會執行如下操作。 步驟一:下載Bootstrap文件 輸入Boots ...


 一     概述

在我們講解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/。
  • 極少部分文章利用讀書、參考、引用、抄襲、複製和粘貼等多種方式整合而成的,大部分為原創。
  • 如您喜歡,麻煩推薦一下;如您有新想法,歡迎提出,郵箱:[email protected]
  • 可以轉載該博客,但必須著名博客來源。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • zookeeper集群環境搭建詳細圖文教程 zhoubang @ 2018-01-02 【文檔大綱】 友情介紹 軟體環境 註意點 環境安裝 1、 新建用於存儲安裝包以及軟體安裝的目錄 2、 下載安裝zookeeper 3、 解壓zookeeper壓縮包 單節點zookeeper配置 1、 配置zoo ...
  • 概述: 1.Spring 為展現層提供的基於 MVC 設計理念的優秀的Web 框架,是目前最主流的 MVC 框架之一。 2.Spring MVC 通過一套 MVC 註解,讓 POJO 成為處理請 求的控制器,而無須實現任何介面。 3.支持 REST風格的 URL請求。 4.採用了鬆散耦合可插拔組件結 ...
  • 1 abs(x): 返回數的絕對值,對象可以是整數,浮點數或複數。當對象是複數時,返回的是實部和虛部平方和的開根。 2 divmod(x,y)返回一個包含商和餘數的一個元組。Python 3.x不支持複數類型。 3 bool(x) ,任何值為0的數字和空集(包括空列表,空元組,空字典),或邏輯錯誤都 ...
  • 技術探討,有關基於java,jsp,struts,spring等內容,歡迎大家一起進步《各種基於java的課堂作業或者畢業設計等信息系統》 ...
  • 線程不安全代碼測試 private static class UnsafeSequence { private int value; public int getNext() { return value++; } } 使用兩個線程分別調用上面的getNext方法1000次,出現了一次線程不安全的情 ...
  • 網路上流傳的大部分95%以上的程式都是跑不通的,應大部分同學要求,現寫了一個酒店管理信息系統。 是ssh的架構, 基於java的 。 貼2個截圖 第二個 ...
  • 題目描述 棟棟最近迷上了隨機演算法,而隨機數是生成隨機演算法的基礎。棟棟準備使用線性同餘法(Linear Congruential Method)來生成一個隨機數列,這種方法需要設置四個非負整數參數m,a,c,X[0],按照下麵的公式生成出一系列隨機數{Xn}: 其中mod m表示前面的數除以m的餘數。 ...
  • 作為複習總結的筆記,我羅列了幾個jdbc步驟,後邊舉個簡單的例子,其中的try塊請讀者自行處理. /* * 1.下載驅動包:com.mysql.jdbc.Driver;網上很多下載資源,自己找度娘,此處不再提供; * * 2.將驅動包導入項目,並add to build path,具體步驟去問度娘. ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...