使用 NuGet.Server 創建和部署 ASP.NET Web 應用程序搭建私有Nuget服務器
-
在Visual Studio中,選擇“新建>文件>”Project,搜索“ASP.NET Web 應用程序 (.NET Framework) ”,選擇 C# 的匹配模板。
![Select the .NET Framework web project template]()
-
將“框架”設置為“.NET Framework 4.6” 。
![Setting the target framework for a new project]()
-
為應用程序提供除 NuGet.Server 之外的合適名稱,選擇“確定”,在接下來出現的對話框中選擇“空”模板,然后選擇“確定” 。
![Select the empty web project]()
-
右鍵單擊項目,選擇“管理 NuGet 包” 。
-
如果面向 .NET Framework 4.6,請在“包管理器 UI”中,選擇“瀏覽器”選項卡,然后搜索并安裝 NuGet.Server 包的最新版本 。 (也可以使用
Install-Package NuGet.Server從包管理器控制臺安裝。)如果出現提示,請接受此許可條款。![Installing the NuGet.Server package]()
-
安裝 NuGet.Server 會將空 Web 應用程序轉換成包源。 此操作會安裝各種其他包,在應用程序中創建
Packages文件夾,并修改web.config以包括其他設置(請參閱該文件中的注釋部分以獲取詳細信息)。重要
在 NuGet.Server 包完成對該文件的修改后,仔細檢查
web.config。 NuGet.Server 可能不會覆蓋現有元素,而會創建重復元素。 稍后嘗試運行該項目時,這些重復項會導致“內部服務器錯誤”。 例如,如果web.config在安裝 NuGet.Server 之前包含<compilation debug="true" targetFramework="4.5.2" />,則該包不會覆蓋它,而是會插入另一個<compilation debug="true" targetFramework="4.6" />。 在這種情況下,請刪除具有較舊框架版本的元素。 -
在不使用調試或 Ctrl+F5) 的情況下,使用調試>"開始"菜單在本地運行站點Visual Studio (。 主頁提供包源 URL,如下所示。 如果發現錯誤,請仔細檢查
web.config是否有重復元素(如前文所述)。![Default home page for an application with NuGet.Server]()
-
首次運行應用程序時,NuGet.Server 會重新構建
Packages文件夾,以包含每個包的文件夾。 這符合 NuGet 3.3 中引入的用于提高性能的本地存儲布局。 添加更多包時,請繼續遵照此結構。 -
測試本地部署后,請根據需要將應用程序部署到任何其他內部或外部網站。
-
部署到
http://<domain>后,用于包源的 URL 將為http://<domain>/nuget。
以外部方式向源添加包
NuGet.Server 站點運行后,就可以使用 nuget push 添加包,前提是在 web.config 中設置了 API 密鑰值。
安裝 NuGet.Server 包后,web.config 包含一個空 appSetting/apiKey 值:
XML
<appSettings>
<add key="apiKey" value="" />
</appSettings>
省略 apiKey 或將其留空時,會禁用向源推送包的功能。
要啟用此功能,請設置 apiKey 的值(理想情況下為強密碼),并添加值為 true 名為 appSettings/requireApiKey 的密鑰:
XML
<appSettings>
<!-- Sets whether an API Key is required to push/delete packages -->
<add key="requireApiKey" value="true" />
<!-- Set a shared password (for all users) to push/delete packages -->
<add key="apiKey" value="" />
</appSettings>
如果服務器已受保護或不需要其他 API 密鑰(例如,在本地團隊網絡上使用專用服務器時),可將 requireApiKey 設置為 false。 然后,有權訪問服務器的所有用戶均可推送包。
從 NuGet.Server 3.0.0 開始,推送包的 URL 更改為 http://<domain>/nuget。 在 3.0.0 版本之前,推送 URL 為 http://<domain>/api/v2/package。
對于 NuGet 3.2.1 和更高版本,除 /nuget 外,默認還會通過啟動配置(默認為 NuGetODataConfig.cs)中的 enableLegacyPushRoute: true 選項啟用此舊 URL /api/v2/package。 請注意,在同一項目中托管多個源時,此功能不適用。
從源中刪除包
使用 NuGet.Server 時,nuget delete 命令會從存儲庫中刪除一個包,但前提是包含 API 密鑰和注釋。
如果想要改變行為以從列表中刪除包(將其保留為可用于包還原),請將 web.config 中的 enableDelisting 鍵更改為 true。
配置包文件夾
對于 NuGet.Server 1.5 和更高版本,可使用 web.config 中的 appSettings/packagesPath 值自定義包文件夾:
XML
<appSettings>
<!-- Set the value here to specify your custom packages folder. -->
<add key="packagesPath" value="C:\MyPackages" />
</appSettings>
packagesPath 可以是絕對或虛擬路徑。
省略 packagesPath 或將其留空時,包文件夾是默認的 ~/Packages。
發布 Web 應用時使包可用
要在向服務器發布應用程序時在源中提供包,請將每個 .nupkg 文件添加到 Visual Studio 中的 Packages 文件夾,然后將每個文件的“生成操作”設置為“內容”,將“復制到輸出目錄”設置為“始終復制” :

NuGetServer部署到IIs上



Packages文件夾,是發布的nuget程序包所存的地址
在VS2022配置私有NuGet包源
1、項目鼠標右鍵打開菜單項,選擇管理NuGet程序包,打開NuGet包管理器

2、在頂部菜單欄,工具=》選項,彈出對話框
發布NuGet程序包
1、新建一個.Net 8類庫項目,隨便寫入一些代碼,在項目鼠標右鍵選擇屬性,在項目屬性頁面,包常規里,在構建時生成NuGet包選擇框中選中,生成項目

2、推送包,打開項目生成的Nuget包所在文件夾,輸入cmd,定位到該文件夾下,輸入命令
需要apikey
dotnet nuget push NuGet包名 --api-key APIkey --source NuGet服務器地址
dotnet nuget push Contoso.08.28.22.001.Test.1.0.0.nupkg --api-key qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 --source https://api.nuget.org/v3/index.json
不需要apikey
dotnet nuget push NuGet包名 --source NuGet服務器地址
dotnet nuget push DeanNuGet.Package.Consul.1.0.0.nupkg --source http://127.0.0.1:8088/nuget

推送包第二種,直接把該包文件直接復制到NuGetServer服務所在的文件夾里的Packages文件夾下
使用私有NuGet程序包源查找發布的程序包

部署私有nuget.server服務參考文檔:
https://learn.microsoft.com/zh-cn/nuget/hosting-packages/nuget-server (推薦)
http://www.rzrgm.cn/rqcim/p/15923931.html
打包參考文檔:
https://learn.microsoft.com/zh-cn/nuget/quickstart/create-and-publish-a-package-using-visual-studio?tabs=netcore-cli(推薦)
https://zhuanlan.zhihu.com/p/649744350
http://www.rzrgm.cn/elsons/p/17012023.html
推送包
使用cmd進入包文件所在的目錄,從包含 .nupkg 文件的文件夾運行以下命令。 指定 .nupkg 文件名,并將密鑰值替換為 API 密鑰。
dotnet nuget push Contoso.08.28.22.001.Test.1.0.0.nupkg --api-key qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 --source https://api.nuget.org/v3/index.json
沒有密鑰
dotnet nuget push DeanNuGet.Package.Consul.1.0.0.nupkg --source http://127.0.0.1:8088/nuget





浙公網安備 33010602011771號