NuGet.Server

NuGet.Server 是 .NET Foundation 提供的套件,建立 ASP.NET 應用程式在所有執行 IIS 的伺服器上裝載套件摘要。 簡而言之,NuGet.Server 可透過 HTTP (特別是 OData) 在伺服器上提供資料夾。 設定簡單,而且最適合簡單的情況。

  1. 在 Visual Studio 中建立空的 ASP.NET Web 應用程式,並新增 NuGet.Server 套件。
  2. 在應用程式中設定 Packages 資料夾並新增套件。
  3. 將應用程式部署至合適的伺服器。

下列各節會使用 C# 逐步詳加解說。

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

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

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

    Select the .NET Framework web project template

  2. Framework設定為 「.NET Framework 4.6」。

    Setting the target framework for a new project

  3. 提供應用程式 NuGet.Server「以外」的合適名稱,選取 [確定],並在下一個對話方塊中選取 [空白] 範本,再選取 [確定]

    Select the empty web project

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

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

    Installing the NuGet.Server package

  6. 安裝 NuGet.Server 會將空的 Web 應用程式轉換成套件來源。 其會安裝其他各種套件、在應用程式中建立 Packages 資料夾,並修改 web.config 以包含其他設定 (詳細資料請參閱該檔案的註解)。

    重要

    在 NuGet.Server 套件完成對該檔案的修改之後,請仔細檢查 web.config。 NuGet.Server 可能不會覆寫現有的項目,而是建立重複的項目。 當您稍後嘗試執行專案時,這些重複項目將會導致「內部伺服器錯誤」。 例如,在安裝 NuGet.Server 之前,如果您的 web.config 包含了 <compilation debug="true" targetFramework="4.5.2" />,套件就不會加以覆寫,而會插入第二個 <compilation debug="true" targetFramework="4.6" />。 在此情況下,請刪除 Framework 版本較舊的項目。

  7. 使用 [> 偵錯開始但不偵錯] 或 Ctrl+F5) ,在本機Visual Studio (中執行月臺。 首頁會提供套件摘要 URL,如下所示。 如果您看到錯誤,請仔細檢查是否有 web.config 重複的專案,如先前所述。

    Default home page for an application with NuGet.Server

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

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

  10. 一旦部署到 http://<domain>,套件來源使用的 URL 就會是 http://<domain>/nuget

將套件新增至外部摘要

NuGet.Server 網站開始執行之後,假設您在 web.config 中設定了 API 金鑰值,就可以使用 nuget push 新增套件。

安裝 NuGet.Server 套件之後,web.config 包含空的 appSetting/apiKey 值:

<appSettings>
    <add key="apiKey" value="" />
</appSettings>

apiKey 省略或空白時,會停用將套件推送至摘要。

若要啟用這項功能,請將 apiKey 設成值 (最好是強式密碼),並新增有 true 值的 appSettings/requireApiKey 金鑰:

<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 開始。伺服器 3.0.0,推送套件的 URL 已變更為 http://<domain>/nuget 。 在 3.0.0 版之前,推送 URL 為 http://<domain>/api/v2/package

使用 NuGet 3.2.1 和更新版本時,除了 /nugetenableLegacyPushRoute: true 預設透過啟動組態 NuGetODataConfig.cs (中的選項,預設會啟用此舊版 URL /api/v2/package) 。 請注意,當多個摘要裝載在同一個專案時,此功能無法運作。

從摘要移除套件

透過 NuGet.Server,假如您在註解中包含了 API 金鑰,nuget delete 命令會從存放庫移除套件。

如果您想要將行為變更為取消列入套件 (使其可供套件還原使用),請將 web.config 中的 enableDelisting 金鑰變更為 True。

設定 Packages 資料夾

使用 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

發佈 Web 應用程式時提供套件

將應用程式發佈至伺服器時,若要在摘要中提供套件,請將每一個 .nupkg 檔案新增至 Visual Studio 中的 Packages 資料夾,再將每一個檔案的 [建置動作] 設成 [內容],然後將 [複製到輸出目錄] 設成 [一律複製]

Copying packages to the Packages folder in the project

版本資訊

NuGet的版本資訊。GitHub版本頁面上提供伺服器。 這包括錯誤修正和新增新功能的詳細資料。

NuGet.Server 支援

如需使用 NuGet.Server 的額外說明,請在 https://github.com/nuget/NuGetGallery/issues 上建立問題。