日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET Core 系列5 :使用 Nuget打包类库

發(fā)布時間:2023/12/4 asp.net 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET Core 系列5 :使用 Nuget打包类库 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
NuGet是個開源項目,項目包括 NuGet VS插件/NuGet Explorer/NuGetServer/NuGet命令行等項目,.NET Core項目完全使用Nuget 管理組件之間的依賴關(guān)系,Nuget已經(jīng)成為.NET 生態(tài)系統(tǒng)中不可或缺的一個組件,從項目角度,將項目中各種組件的引用統(tǒng)統(tǒng)交給NuGet,添加組件/刪除組件/以及更新組件即可一鍵完成,大大提升工作效率,減少不必要的引用報錯。從運維角度,可在不影響老版本的情況下發(fā)布新版本,可統(tǒng)一管理公司各個項目中組件版本不一和各個版本組件的使用情況,減少故障發(fā)生以并使得項目穩(wěn)定運行。

以往做nuget包我們一般要么用命令行,要么用nuget的圖形化界面去做,但是一些操作比較麻煩.比如引入命名空間,引入第三方nuget包。這些在.NET Core項目里卻很簡單,只需要使用命令行dotnet pack,在.NET Core系列 : 1、.NET Core 環(huán)境搭建和命令行CLI入門?做了簡要介紹,下面我們來詳細介紹下這個命令。

dotnet-pack?- 將代碼打包成 NuGet 包

概要

dotnet pack [--output] [--no-build] [--build-base-path] [--configuration] [--version-suffix] [<project>]

描述

dotnet pack?命令生成項目并創(chuàng)建 NuGet 包。這個操作的結(jié)果是兩個?nupkg?擴展名的包。一個包含代碼,另一個包含調(diào)試符號。

該項目被依賴的 NuGet 包裝被添加到 nuspec 文件,因此,他們能夠在安裝包時得到解決。
默認情況下,項目到項目之間的引用是不打包到項目中的。如果你想那樣做,你需要在你的依賴中引用需要項目的?type?節(jié)點設(shè)置為 “build” ,設(shè)置就像下面的例子:

{"version": "1.0.0-*","dependencies": {"ProjectA": {"target": "project","type": "build"}} }

默認情況下,dotnet pack?首先生成項目。如果你想避免這樣,傳遞?--no-build?選項。這在持續(xù)集成(CI)構(gòu)建場景,正如你知道代碼僅僅是預(yù)生成的示例,會是有用的。

選項

[project]

打包的項目。它還可以是一個?project.json?文件的路徑或者是目錄。如果忽略,它將默認為當前目錄。

-o,?--output?[DIR]

指定生成的目錄。

--no-build

打包進程中跳過生成階段。

--build-base-path

指定臨時生成產(chǎn)物的目錄。默認情況下,它們在當前目錄的 obj 目錄。

-c,?--configuration [Debug|Release]

當生成項目時使用的配置。如果沒有指定,將默認為 “Debug”。

例子

dotnet pack

打包當前項目。

dotnet pack ~/projects/app1/project.json

打包 app1 項目。

dotnet pack --output nupkgs

打包當前的應(yīng)用程序,并將生成的包放置到指定的文件夾中。

dotnet pack --no-build --output nupkgs

打包當前的項目到指定的文件夾中,并跳過生成步驟

?

回到我們在.NET Core系列 :3 、使用多個項目?創(chuàng)建的類庫項目DotnetNewLib,切換到DotnetNewLib 目錄下執(zhí)行 dotnet pack命令:

[root@Mono DotnetNewLib]# dotnet pack
Project DotnetNewLib (.NETStandard,Version=v1.6) was previously compiled. Skipping compilation.
Producing nuget package "DotnetNewLib.1.0.0" for DotnetNewLib
DotnetNewLib -> /root/DotnetNewLib/bin/Debug/DotnetNewLib.1.0.0.nupkg
Producing nuget package "DotnetNewLib.1.0.0.symbols" for DotnetNewLib
DotnetNewLib -> /root/DotnetNewLib/bin/Debug/DotnetNewLib.1.0.0.symbols.nupkg

?

目錄結(jié)構(gòu)如下:

DotnetNewLib

|-- Library.cs

|-- project.json

|-- project.lock.json

+—bin

???? +—Debug

????????????? |-- DotnetNewLib.1.0.0.nupkg

????????????? |-- DotnetNewLib.1.0.0.symbols.nupkg

????????????? +-- netstandard1.6

????????????????????????? |-- DotnetNewLib.deps.json

????????????????????????? |-- DotnetNewLib.dll

????????????????????????? +-- DotnetNewLib.pdb

?

上面的結(jié)構(gòu)里我把obj目錄拿掉了,我們看到在Debug目錄下生成了2個文件DotnetNewLib.1.0.0.nupkg 和DotnetNewLib.1.0.0.symbols.nupkg, 這些就是nuget 包,很簡單吧,版本號信息來自于project.json文件:

{
? "version": "1.0.0-*",
? "buildOptions": {
??? "debugType": "portable"
? },
? "dependencies": {},
? "frameworks": {
??? "netstandard1.6": {
????? "dependencies": {
??????? "NETStandard.Library": "1.6.0"
????? }
??? }
? }
}

但是我生成的是Debug,我們生成Release 版本:

dotnet pack -c Release

[root@Mono DotnetNewLib]# dotnet pack -c Release
Project DotnetNewLib (.NETStandard,Version=v1.6) will be compiled because expected outputs are missing
Compiling DotnetNewLib for .NETStandard,Version=v1.6

Compilation succeeded.
??? 0 Warning(s)
??? 0 Error(s)

Time elapsed 00:00:03.4976986


Producing nuget package "DotnetNewLib.1.0.0" for DotnetNewLib
DotnetNewLib -> /root/DotnetNewLib/bin/Release/DotnetNewLib.1.0.0.nupkg
Producing nuget package "DotnetNewLib.1.0.0.symbols" for DotnetNewLib
DotnetNewLib -> /root/DotnetNewLib/bin/Release/DotnetNewLib.1.0.0.symbols.nupkg

生成了Release目錄

DotnetNewLib

|-- Library.cs

|-- project.json

|-- project.lock.json

+—bin

???? +—Debug

????????????? |-- DotnetNewLib.1.0.0.nupkg

????????????? |-- DotnetNewLib.1.0.0.symbols.nupkg

????????????? +-- netstandard1.6

????????????????????????? |-- DotnetNewLib.deps.json

????????????????????????? |-- DotnetNewLib.dll

????????????????????????? +-- DotnetNewLib.pdb

???? +—Release

????????????? |-- DotnetNewLib.1.0.0.nupkg

????????????? |-- DotnetNewLib.1.0.0.symbols.nupkg

????????????? +-- netstandard1.6

????????????????????????? |-- DotnetNewLib.deps.json

????????????????????????? |-- DotnetNewLib.dll

????????????????????????? +-- DotnetNewLib.pdb

在Release目錄下 生成了2個文件DotnetNewLib.1.0.0.nupkg 和DotnetNewLib.1.0.0.symbols.nupkg,第一個文件就是我們想要的nuget包。我們來看下Nuget 包里的具體內(nèi)容,我們可以用

?NuGet Package Explorer?工具打開DotnetNewLib.1.0.0.nupkg:

里面僅有一個 lib 文件 netstandard1.6 目標配置文件。這意味著,我們 NuGet 包只適用于.Net Core 應(yīng)用程序 針對 NetStandard1.6 (和即將到來的 4.6.3),文章?擁抱.NET Core,如何開發(fā)一個跨平臺類庫 (1)

對Nuget包做了很好的說明了,推薦大家閱讀, 園子里還有一篇《用命令行工具創(chuàng)建 NuGet 程序包》對Nuget 的詳細內(nèi)容做了講解。

相關(guān)文章:

  • .NET Core系列 : 1、.NET Core 環(huán)境搭建和命令行CLI入門

  • .NET Core系列 : 2 、project.json 這葫蘆里賣的什么藥

  • .NET Core系列 :3 、使用多個項目

  • .NET Core系列 :4 測試

原文地址:http://www.cnblogs.com/shanyou/p/5814683.html


.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關(guān)注

贊賞

人贊賞

總結(jié)

以上是生活随笔為你收集整理的.NET Core 系列5 :使用 Nuget打包类库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。