nuget伺服器搭建,以及如何釋出一個Nuget包
一、本地dll如何打包,以及版本的更新
本小節主要介紹兩種方式將本地dll打包為Nuget包,
1.1 利用nuget.exe進行打包(應用於.net framework)
1. 下載nuget.exe
nuget.exe下載地址:https://www.nuget.org/downloads。 下載完成後,不需要安裝。請將nuget.exe複製到需要打包的專案資料夾中
2. 打包成.nupkg包
- 首先執行
.\nuget sepc
生成.nuspec配置檔案,用於nuget的配置項 - 然後執行
.\nuget pack packageName
釋出成nuget包
3. 注意
此類庫更新版本之後,再打包成.nuget檔案,是不會重新生成.nuspec檔案。
1.2 使用dotnet 進行打包(應用於.net core )
- 執行
dotnet pack
即可對當前專案打包,必須在當前專案資料夾中支援(還有.csproj檔案的目錄) - 對專案進行版本行,可以配置.csprojc檔案,如下所示:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>netstandard2.0</TargetFramework><Version>1.0.1.1</Version> <AssemblyVersion>1.2.0.0</AssemblyVersion> <FileVersion>1.3.0.0</FileVersion> </PropertyGroup> </Project>
此處需要注意的時候,預設建立的dll是沒Version, AssemblyVersion, FileVersion節點,需要自己手動新增;以及在更新版本後 .nuspec檔案會根據版本重新建立一個:
1.3 配置nuget源
1. 本地檔案包的方式
配置本地Nuget源。在工具 nuget包管理器 -> 程式包源,做如下配置
然後把釋出的.nupkg包放在此資料夾即可
2. 配置自己伺服器的源
注意,如果用的是linux版本,測源地址中不需要加nuget子目錄。
1.4 使用
引入介面如下:
二、在linux上搭建nuget.server
本小節介紹如何使用docker來搭建屬於自己的Nuget倉庫
2.1. 執行docker映象
docker run -d -p 8080:80 -v $PWD/nuget/db:/var/www/db -v $PWD/nuget/packages:/var/www/packagefiles -e NUGET_API_KEY=ee28314c-f7fe-2550-bd77-e09eda3d0119 sunside/simple-nuget-server
-v nuget:當前目錄下nuget資料夾對映為 nuget-server的包,其中要有packages資料夾。他也有對映 nuget_api_key:表示此Nuget倉庫的索引Key。push的要用的
2.2 建立一專案打包和釋出
- 建立一個 classlib 庫檔案(web,或者webapi是不能打包的)
dotnet new classlib -n Nu.Common
- 打包 進入到專案根目錄,也就是包含.csproj檔案的目錄
dotnet pack
命令成功後,會在bin/Debug目錄下建立.nupkg檔案
- 釋出包 必須進入到.nupkg包所在位置
..\..\nuget.exe push -Source http://localhost:8080 -ApiKey ee28314c-f7fe-2550-bd77-e09eda3d0119 Nu.Common.1.0.0.nupkg
2.3. 引用包
- 在vs中的引用
- 在vscode中的引用 配置nuget.config配置檔案
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="mySource" value="http://localhost:8080" /> </packageSources> </configuration>
然後執行dotnet add package Nu.Common(包名)
即可.
三、在windows上搭建
此方式更為簡單,因為nuget上有現在的nuget.server這包,就是用於做這件事情的。步驟如下(此nuget包不支援.net core版本):
3.1 搭建專案
- 建立一個mvc 專案(空) 此專案必須的.net Framework版本必須>=4.6。
- 引入nuget.server這個nuget包
- 更改配置
節點名 |
說明 |
---|---|
apiKey |
nuget.server的金鑰配置,用於Push和delete包 |
packagesPath |
nuget.server中的包存放路徑 |
配置節點都在appSettings節點下
3.2 執行此專案
- 解決一個錯誤,如果在執行時提示如下錯誤,請按照提示刪除相應的節點
- 執行成功
- 釋出和移除包 因為Nuget的客戶端只有一個,可以參考docker搭建章節的push和delele
四、常用命令
命令 |
說明 |
示例 |
---|---|---|
push |
釋出一個包到nuget.server,包名 apikey, -Source是必須的 |
.\nuget.exe push .\ClassLibrary1.1.2.0.nupkg samlong -Source http://localhost:56546/nuget |
delete |
從指定 -Source上移除一個包,必須指定版本 |
..\..\nuget.exe delete Nu.Common 1.0.0 samlong -Source http://localhost:56981/nuget |
list |
檢視伺服器上有那些nuget 包 |
.\nuget.exe list -Source http://localhost:56546/nuget |
當然dotnet 也是一樣的
***********轉載:https://cloud.tencent.com/developer/article/1021829