1. 程式人生 > >nuget服務器搭建,以及如何發布一個Nuget包

nuget服務器搭建,以及如何發布一個Nuget包

包含 odi table 應用 mage 源地址 項目 mic 方式

本文章主要介紹如何將本地dll打包成為一個Nuget包,並如何發布到自己的nuget服務器,示例代碼下載。章節如下

1. 本地dll如何打包,以及版本的更新

2. 在linux上搭建nuget.server

3. 在windows上搭建nuget.server

4. 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 也是一樣的

nuget服務器搭建,以及如何發布一個Nuget包