.NET Core中創(chuàng)建和使用NuGet包的示例代碼
在.NET Core的項目中,如果我們要在項目中引用其它DLL文件,不建議直接在項目引用中添加DLL文件(雖然在.NET Core項目中也可以這么做),建議是去直接下載DLL文件所屬的NuGet包。這樣最大的好處是我們可以將要引用DLL文件的所有依賴文件也一起引入到項目中,這樣保證了引用文件的完整性,讓其可以正確地運行。
下面我們通過一個.NET Core類庫項目和一個ASP.NET Core項目,來演示怎么發(fā)布一個NuGet包,并在項目中引用該NuGet包。
首先我們新建一個.NET Core類庫項目"Custom.Library.StringUtils",它包含一個簡單的字符串工具類"StringHelper",用來做簡單的字符串處理:
using System;
using Newtonsoft.Json;
namespace Custom.Library.StringUtils
{
/// <summary>
/// 字符串工具類
/// </summary>
public static class StringHelper
{
/// <summary>
/// 將字符串轉(zhuǎn)換為大寫
/// </summary>
/// <param name="text">字符串</param>
/// <returns>大寫的字符串</returns>
public static string GetUpperString(string text)
{
return text.ToUpper();
}
/// <summary>
/// 將一個對象轉(zhuǎn)換為json字符串
/// </summary>
/// <param name="jsonObject">對象</param>
/// <returns>json字符串</returns>
public static string ToJson(object jsonObject)
{
return JsonConvert.SerializeObject(jsonObject);
}
}
}
注意為了演示我們這個.NET Core類庫項目還引用了其它NuGet包,我們在項目中引用和使用了著名的json處理NuGet包:Newtonsoft.Json

接下來我們要把類庫項目"Custom.Library.StringUtils"發(fā)布為一個NuGet包。
首先由于我們在項目中寫了很多<summary>注釋,我們肯定希望其它的.NET Core項目引用了我們的NuGet包后,也能得到這些<summary>的提示,所以我們要在項目屬性(Properties)上做一些設(shè)置:

在項目的屬性上,我們選中Build頁面,這里有兩個地方要進(jìn)行設(shè)置,首先由于我們是要在發(fā)布的NuGet包中生成XMLdocumentation文件,來包含<summary>注釋,所以我們要將Configuration下拉框選擇為All Configurations,這樣我們可以在發(fā)布(Release)時也生成XMLdocumentation文件,而不僅僅是在調(diào)試(Debug)時才生成。然后我們還要確保XML documentation file這個復(fù)選框是勾上的,這樣當(dāng)我們的.NET Core類庫項目發(fā)布后才會生成對應(yīng)的XML documentation文件:

其次每個NuGet包其實都有版本號,我們可以在Package頁面,通過Package version來設(shè)置當(dāng)前NuGet包的版本號為1.0.0,如下所示:

然后我們就可以發(fā)布我們的.NET Core類庫項目"Custom.Library.StringUtils"為NuGet包了,在項目上點擊發(fā)布(Publish):

在彈出的配置窗口中選擇一個發(fā)布目錄,這里我們選擇為本地計算機目錄"C:\Local nuget repository",這個目錄也會作為我們后面本地NuGet包管理器的source,實際上我們還可以選擇一臺遠(yuǎn)程計算機的共享目錄(例如\\192.168.1.105\Remote nuget packages這種網(wǎng)絡(luò)共享目錄)作為NuGet包的source目錄,這樣如果我們的開發(fā)團(tuán)隊人員是在一個局域網(wǎng)中,就可以讓每個開發(fā)人員的Visual Studio從局域網(wǎng)的共享目錄中獲取需要的NuGet包了。

點擊發(fā)布(Publish)后,我們可以在目錄"C:\Local nuget repository"下看到,類庫項目生成的NuGet文件就已經(jīng)存在了:

注意生成的NuGet文件名中是包含版本號的,例如現(xiàn)在如果我們在項目屬性(Properties)中的Package頁面上,將Package version改為2.0.0,如下所示:

然后再發(fā)布.NET Core類庫項目,我們可以看到在發(fā)布目錄"C:\Local nuget repository"下會再生成一個NuGet文件,這次版本號是2.0.0:

接下來我們就要在另外一個ASP.NET Core項目中來引用我們創(chuàng)建的NuGet包了,為此,我們新建一個ASP.NET Core項目"AspNetCore3000Message"。
首先我們要配置Visual Studio中尋找NuGet包的source,在Visual Studio中選擇Tools > NuGet Package Manager > Package Manager Settings

然后在彈出窗口中選中Package Sources頁面,然后點擊加號新建一個NuGet包source,名稱(Name)為"Local nuget package",路徑(Source)為我們前面.NET Core類庫項目的發(fā)布目錄"C:\Local nuget repository",如下所示:

點擊OK按鈕后,我們就將一個本地目錄設(shè)置為了Visual Studio中NuGet包管理器的source了,就像前面所說我們還可以將一臺遠(yuǎn)程計算機的共享目錄作為source,這樣開發(fā)團(tuán)隊人員的Visual Studio都可以從該共享目錄中獲取NuGet包了。
現(xiàn)在我們在ASP.NET Core項目"AspNetCore3000Message"中,打開NuGet包管理器:

然后,我們將右上角的Package source下拉框選擇為All,接著在搜索框中輸入我們前面發(fā)布的.NET Core類庫項目名"Custom.Library.StringUtils",就可以找到我們發(fā)布的NuGet包了,由于我們前面發(fā)布了兩個版本到發(fā)布目錄"C:\Local nuget repository",所以這里顯示NuGet包的版本也有兩個"1.0.0"和"2.0.0",另外由于我們在.NET Core類庫項目"Custom.Library.StringUtils"中引用了Newtonsoft.Json這個NuGet包,所以我們這里看到在Dependencies下面顯示我們的NuGet包還依賴于Newtonsoft.Json,這樣在安裝我們的NuGet包Custom.Library.StringUtils時,也會下載和安裝Newtonsoft.Json這個NuGet包,保證了所有依賴的DLL文件都被引用到了ASP.NET Core項目"AspNetCore3000Message"中:

這里我們選擇安裝"2.0.0"版本:

之后我們就可以在ASP.NET Core項目中使用.NET Core類庫項目中的StringHelper類了,并且可以看到<summary>注釋是成功顯示的:

參考文獻(xiàn):
How to include XML documentation file in NuGet package built from a project file?
到此這篇關(guān)于.NET Core中創(chuàng)建和使用NuGet包的示例代碼的文章就介紹到這了,更多相關(guān).NET Core 創(chuàng)建和使用NuGet包內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
EF使用數(shù)據(jù)注解特性創(chuàng)建表結(jié)構(gòu)
本文詳細(xì)講解了EF使用數(shù)據(jù)注解特性創(chuàng)建表結(jié)構(gòu)的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03
asp.net顯示自己的網(wǎng)頁圖標(biāo)的幾種方式
多tab的瀏覽器,你一定會發(fā)現(xiàn)tab前邊的個性圖標(biāo),關(guān)于這個東西有好幾種做法,下面與大家分享下2014-05-05
ASP.NET中為TextBox中添加calendar.js示例代碼
為TextBox中添加calendar.js對于一些新手朋友確實有點難度,下面為大家介紹下ASP.NET中具體的實現(xiàn)方法2013-11-11
淺談ASP.NET Core中間件實現(xiàn)分布式 Session
這篇文章主要介紹了淺談ASP.NET Core中間件實現(xiàn)分布式 Session,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11
C#反射技術(shù)的簡單操作(讀取和設(shè)置類的屬性)
反射的作用想必大家都知道了吧,少量屬性的自動化操作手動添加幾下當(dāng)然是沒有問題的,但是屬性數(shù)量較多的時候敲起這些繁鎖的代碼可以困了,再說對擴展和維護(hù)性造成很多的不遍,以下代碼中如不能直接使用請?zhí)砑觰sing System.Text;的引用。2011-01-01
判斷WebBrowser瀏覽器網(wǎng)頁加載完成的處理方法
.net 中通過 SqlConnection 連接 sql server,我們會發(fā)現(xiàn)第一次連接時總是很耗時,但后面連接就很快,這個其實和SqlConnection 的連接池機制有關(guān),正確的理解這個連接池機制,有助于我們編寫高效的數(shù)據(jù)庫應(yīng)用程序。2013-04-04
ASP.NET Core跨站登錄重定向的實現(xiàn)新姿勢
這篇文章主要給大家介紹了關(guān)于ASP.NET Core實現(xiàn)跨站登錄重定向的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07
ASP.NET Core 配置和使用環(huán)境變量的實現(xiàn)
這篇文章主要介紹了ASP.NET Core 配置和使用環(huán)境變量的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
ASP.NET用SignalR建立瀏覽器和服務(wù)器的持久連接詳解
這篇文章主要給大家介紹了ASP.NET用SignalR如何建立瀏覽器和服務(wù)器的持久連接,文章先給大家簡單介紹了配置環(huán)境,而后通過實戰(zhàn)來給大家詳細(xì)的介紹了實現(xiàn)的過程,文中通過一步步的步驟介紹的很詳細(xì),感興趣的朋友們可以參考借鑒,下面來一起看看吧。2016-12-12

