NuGet.Server 是 .NET Foundation 所提供的套件,可建立 ASP.NET 應用程式,可在執行 IIS 的任何伺服器上裝載套件摘要。 簡單地說,NuGet.Server 會透過 HTTP(S) 在伺服器上提供資料夾 (特別是 OData) 。 它易於設置,最適合簡單的場景。
- 在 Visual Studio 中建立空白的 ASP.NET Web 應用程式,並將 NuGet.Server 套件新增至其中。
- 如果您使用 Visual Studio 2022,則必須新增 .NET Framework 開發工具。 您需要此專案,才能建立新的 ASP.NET Web 應用程式 (.NET Framework) 專案。
- 在應用程式中設定
Packages資料夾並新增套件。 - 將應用程式部署到合適的伺服器。
下列各節將詳細解說使用 C# 來進行此過程。
如果您有 NuGet.Server 的進一步問題,請在 上 https://github.com/nuget/NuGetGallery/issues建立問題。
使用 NuGet.Server 建立和部署 ASP.NET Web 應用程式
在 Visual Studio 中,選取 [ 檔案 > 新增 > 專案],搜尋「ASP.NET Web 應用程式 (.NET Framework)」,選取 C# 的相符範本。
將 Framework 設定為 “.NET Framework 4.6”。
為應用程式提供 NuGet.Server 以外的 適當名稱,選取 [確定],然後在下一個對話方塊中選取 [空白 範本],然後選取 [ 確定]。
以滑鼠右鍵按一下專案,選取 [管理 NuGet 套件]。
在套件管理員 UI 中,選取 [ 瀏覽 ] 索引標籤,然後搜尋並安裝最新版本的 NuGet.Server 套件 (如果您以 .NET Framework 4.6 為目標)。 (您也可以從
Install-Package NuGet.Server套件管理員控制台使用 安裝它。如果出現提示,請接受授權條款。
安裝 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" />。 在此情況下,請刪除具有舊架構版本的元素。在 Visual Studio 中以本機模式執行網站(使用偵錯>不偵錯啟動或 Ctrl+F5)。 首頁頁面提供套件提要URL,如以下所示。 如果您看到錯誤,請仔細檢查是否有
web.config重複的元素,如先前所述。
第一次執行應用程式時,NuGet.Server 會
Packages重組資料夾,以包含每個套件的資料夾。 這符合 NuGet 3.3 引進的 本機記憶體配置 ,以改善效能。 新增更多套件時,請繼續遵循此結構。測試本機部署之後,請視需要將應用程式部署至任何其他內部或外部網站。
部署至
http://<domain>之後,您用於套件來源的 URL 將是http://<domain>/nuget。
從外部將套件新增至資訊流
執行 NuGet.Server 網站之後,只要您在 中設定 API 金鑰值,您就可以使用 web.config來新增套件。
安裝 NuGet.Server 套件之後, web.config 包含空 appSetting/apiKey 值:
<appSettings>
<add key="apiKey" value="" />
</appSettings>
當 apiKey 被省略或留空時,將停用將套件推送到饋送的功能。
若要啟用此功能,請將 apiKey 設為值(理想情況下為強密碼),並新增鍵 appSettings/requireApiKey,其值為 true。
<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 和更新版本時,除了預設會/api/v2/package啟用此舊版 URL /nuget 之外,還會在enableLegacyPushRoute: true啟動設定中透過選項啟用 (NuGetODataConfig.cs預設)。 請注意,當多個資料流託管在同一專案中時,此功能不起作用。
從饋送中移除套件
使用 NuGet.Server 時, nuget delete 命令會從存放庫中移除套件,前提是您在註解中包含 API 金鑰。
如果您想要將行為更改為僅除名套件(並保留套件可用於還原),請將enableDelisting鍵在web.config中設置為 true。
設定封包資料夾
在NuGet.Server 1.5及更高版本中,您可以使用web.config中的appSettings/packagesPath值來自訂套件資料夾:
<appSettings>
<!-- Set the value here to specify your custom packages folder. -->
<add key="packagesPath" value="C:\MyPackages" />
</appSettings>
packagesPath 可以是絕對路徑或虛擬路徑。
當 `packagesPath` 被省略或保留為空時,packages 資料夾是預設的 `~/Packages`。
在發佈 Web 應用程式時提供套件
若要在將應用程式發佈至伺服器時,讓套件在摘要中可用,請將每個 .nupkg 檔案新增至 Visual Studio 中的資料夾,然後將每個檔案 Packages 的 [建置動作 ] 設定為 [ 內容 ],並將 [複製到輸出目錄] 設定為 [一律複製]:
發行說明
NuGet.Server 的版本資訊可在 GitHub 版本頁面上取得。 這包括有關錯誤修復和新增功能的詳細資訊。
NuGet.Server 支援
如需使用 NuGet.Server 的其他說明,請在https://github.com/nuget/NuGetGallery/issues上提交一個問題。