當前位置:
首頁 > 知識 > 設置 Nuget 本地源、在線私有源、自動構建打包

設置 Nuget 本地源、在線私有源、自動構建打包

設置 Nuget 本地源、在線私有源、自動構建打包

本文演示如果在項目中生成 Nuget 包,並添加 Nuget 本地源,不用發布到 Nuget 伺服器。再附帶使用在線私有源的簡單方法,以及提交代碼自動拉取構建

本文用項目NewLifeX/X打包為 Nuget 包,項目NewLife.Cube測試

打包 nuget 包

項目右鍵屬性-打包即可,執行之後會生成並打包,生成的 NuGet 包屬性可以在項目屬性面板的打包一項設置,設置版本號、包描述、作者信息等

注意,打包操作相當於生成,也就是說生成過但是沒打包,此時打包並不會生成新的 Nuget 包,需要全部刪除輸出目錄,重新打包

得到 nuget 包

設置 Nuget 源

打包之後需要設置一下 Nuget 源,讓工具知道還原的時候用哪個源

項目右鍵屬性-管理 Nuget 程序包-打開右邊設置圖標進入設置。從截圖可以看到,如果是設置好包源的情況,兩個包都提示可以升級,並且是剛剛生成的新版本,箭頭旁邊的下拉框對應的就是剛剛的包地址,即本地路徑

添加本地目錄作為 Nuget 源,直接填本機目錄。依次打開選項中的 Nuget 包管理器-程序包源-綠色的加號-底下填名稱-點擊三個點按鈕選擇本地路徑-更新-確定

經過以上設置,Nuget 包管理界面右邊的下拉框就會出現剛剛設置的包源,選擇剛剛設置的那個,在瀏覽選項卡就能看到只有這兩個包

團隊共享設置

上面設置的路徑是某台電腦上的,另一台電腦對應地址又可能不一樣,那麼如何使用同一個設置,並且不用每個人都添加一次 Nuget 源呢?答案就是Nuget.config以及相對地址

首先是Nuget.config,在 VS 打開項目的時候,會自動載入裡面的設置,自動添加源,只在本項目有效,並不是全局的。然後包地址設置為相對地址,相對於解決方案所在目錄,兩個項目均處於同一目錄即可。本文的兩個項目輸出目錄均為解決方案所在目錄的上一目錄

在解決方案目錄新建文件Nuget.config,填寫以下內容

!

預覽

可以看到,相對目錄被識別為正確的地址,這樣就可以達到所有人共用此設置的目的,Nuget.config的源排第一位,還原時優先從本地源查找還原

在線私有源

Nuget 官方提供了NuGet.Server,可自行搭建自己的 Nuget 伺服器,

這裡使用BaGet,使用 Docker 快速搭建一個 Nuget 伺服器

以 ubuntu 伺服器為例,在當前目錄新建baget.env文件,填寫如下內容,注意 ApiKey,push 包的時候會用到

ApiKey=NUGET-SERVER-API-KEY

Storage__Type=FileSystem

Storage__Path=/var/baget/packages

Database__Type=Sqlite

Database__ConnectionString=Data Source=/var/baget/baget.db

Search__Type=Database

預覽

然後運行容器docker run --rm --name nuget-server -p 5555:80 --env-file baget.env -v $(pwd)/baget-data:/var/baget loicsharma/baget:latest

一切 ok 後就可以推送 Nuget 包了,dotnet nuget push -s http://localhost:5555/v3/index.json -k NUGET-SERVER-API-KEY newtonsoft.json.11.0.2.nupkg,注意推送地址以及 ApiKey,包名的話,一般懶得打可以用*.nupkg

在線自動構建 Nuget 包並發布-myget

使用myget,可以設置自動拉取源碼,自動構建 Nuget 包,並且可以 push 到 nuget.org,所以可以用 myget 來測試

新建 feed

設置構建服務。如果點擊之後沒啥反應,沒有彈窗或者只有黑色的遮罩,這可能是瀏覽器不兼容,換個瀏覽器(這裡就是谷歌瀏覽器有問題,其它比如火狐沒事。當然也可以打開控制台複製那個彈窗地址手動打開)

注意第一個設置,勾選之後,自動註冊 web hook 每次提交觸發構建服務

點擊 build 開始第一次構建,點擊 edit 可進行更多設置,設置包含源碼、生成版本號的規則等

如果構建成功,點擊一個包,即可看到安裝方法,包源為https://www.myget.org/F//api/v3/index.json

總結

本文記錄了這些 Nuget 包打包發布步驟,幫助還不知道這些方法但又想嘗試的同學

方法多樣,總有適合自己的,最適合團隊的才是最好的。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 千鋒JAVA開發學院 的精彩文章:

10個開源的頂級人工智慧工具

TAG:千鋒JAVA開發學院 |