共用方式為


NuGet.Server

NuGet.Server 是 .NET Foundation 所提供的套件,可建立 ASP.NET 應用程式,可在執行 IIS 的任何伺服器上裝載套件摘要。 簡單地說,NuGet.Server 會透過 HTTP(S) 在伺服器上提供資料夾 (特別是 OData) 。 它易於設置,最適合簡單的場景。

  1. 在 Visual Studio 中建立空白的 ASP.NET Web 應用程式,並將 NuGet.Server 套件新增至其中。
    • 如果您使用 Visual Studio 2022,則必須新增 .NET Framework 開發工具。 您需要此專案,才能建立新的 ASP.NET Web 應用程式 (.NET Framework) 專案。
  2. 在應用程式中設定 Packages 資料夾並新增套件。
  3. 將應用程式部署到合適的伺服器。

下列各節將詳細解說使用 C# 來進行此過程。

如果您有 NuGet.Server 的進一步問題,請在 上 https://github.com/nuget/NuGetGallery/issues建立問題。

使用 NuGet.Server 建立和部署 ASP.NET Web 應用程式

  1. 在 Visual Studio 中,選取 [ 檔案 > 新增 > 專案],搜尋「ASP.NET Web 應用程式 (.NET Framework)」,選取 C# 的相符範本。

    選取 .NET Framework Web 專案範本

  2. Framework 設定為 “.NET Framework 4.6”。

    設定新專案的目標架構

  3. 為應用程式提供 NuGet.Server 以外的 適當名稱,選取 [確定],然後在下一個對話方塊中選取 [空白 範本],然後選取 [ 確定]。

    選取空白的 Web 專案

  4. 以滑鼠右鍵按一下專案,選取 [管理 NuGet 套件]。

  5. 在套件管理員 UI 中,選取 [ 瀏覽 ] 索引標籤,然後搜尋並安裝最新版本的 NuGet.Server 套件 (如果您以 .NET Framework 4.6 為目標)。 (您也可以從 Install-Package NuGet.Server套件管理員控制台使用 安裝它。如果出現提示,請接受授權條款。

    安裝 NuGet.Server 套件

  6. 安裝 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" />。 在此情況下,請刪除具有舊架構版本的元素。

  7. 在 Visual Studio 中以本機模式執行網站(使用偵錯>不偵錯啟動或 Ctrl+F5)。 首頁頁面提供套件提要URL,如以下所示。 如果您看到錯誤,請仔細檢查是否有 web.config 重複的元素,如先前所述。

    具有 NuGet.Server 之應用程式的預設首頁

  8. 第一次執行應用程式時,NuGet.Server 會 Packages 重組資料夾,以包含每個套件的資料夾。 這符合 NuGet 3.3 引進的 本機記憶體配置 ,以改善效能。 新增更多套件時,請繼續遵循此結構。

  9. 測試本機部署之後,請視需要將應用程式部署至任何其他內部或外部網站。

  10. 部署至 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 金鑰 (例如,在本機團隊網路上使用私人伺服器時),您可以設定 requireApiKeyfalse。 然後,所有有權存取伺服器的使用者都可以推送套件。

從 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[建置動作 ] 設定為 [ 內容 ],並將 [複製到輸出目錄] 設定為 [一律複製]:

將套件複製到專案中的 Packages 資料夾

發行說明

NuGet.Server 的版本資訊可在 GitHub 版本頁面上取得。 這包括有關錯誤修復和新增功能的詳細資訊。

NuGet.Server 支援

如需使用 NuGet.Server 的其他說明,請在https://github.com/nuget/NuGetGallery/issues上提交一個問題。