NuGet.Server
NuGet.Server 是 .NET Foundation 提供的套件,建立 ASP.NET 應用程式在所有執行 IIS 的伺服器上裝載套件摘要。 簡而言之,NuGet.Server 可透過 HTTP (特別是 OData) 在伺服器上提供資料夾。 設定簡單,而且最適合簡單的情況。
- 在 Visual Studio 中建立空的 ASP.NET Web 應用程式,並新增 NuGet.Server 套件。
- 在應用程式中設定
Packages
資料夾並新增套件。 - 將應用程式部署至合適的伺服器。
下列各節會使用 C# 逐步詳加解說。
如果您對 NuGet.Server 有進一步的疑問,請在 https://github.com/nuget/NuGetGallery/issues 上建立問題。
使用 NuGet.Server 建立及部署 ASP.NET Web 應用程式
在 Visual Studio中,選取 [檔案 > 新增 > ] Project,搜尋 [ASP.NET Web 應用程式 (.NET Framework) ],然後選取C#的相符範本。
將Framework設定為 「.NET Framework 4.6」。
提供應用程式 NuGet.Server「以外」的合適名稱,選取 [確定],並在下一個對話方塊中選取 [空白] 範本,再選取 [確定]。
以滑鼠右鍵按一下專案,選取 [管理 NuGet 套件]。
如果目標為 .NET Framework 4.6,請在套件管理員 UI 中選取 [瀏覽] 索引標籤,再搜尋並安裝最新版的 NuGet.Server 套件。 (您也可以使用 .) 在出現提示時,從 封裝管理員 主控台
Install-Package NuGet.Server
安裝它。安裝 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 版本較舊的項目。使用 [> 偵錯開始但不偵錯] 或 Ctrl+F5) ,在本機Visual Studio (中執行月臺。 首頁會提供套件摘要 URL,如下所示。 如果您看到錯誤,請仔細檢查是否有
web.config
重複的專案,如先前所述。第一次執行應用程式時,NuGet.Server 會重組
Packages
資料夾以包含每個套件的資料夾。 這符合 NuGet 3.3 為改善效能而推出的本機儲存體配置。 新增多個套件時,會繼續遵循此結構。測試過本機部署後,請視需要將應用程式部署到任何其他內部或外部網站。
一旦部署到
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 和更新版本時,除了 /nuget
enableLegacyPushRoute: 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
資料夾,再將每一個檔案的 [建置動作] 設成 [內容],然後將 [複製到輸出目錄] 設成 [一律複製]:
版本資訊
NuGet的版本資訊。GitHub版本頁面上提供伺服器。 這包括錯誤修正和新增新功能的詳細資料。
NuGet.Server 支援
如需使用 NuGet.Server 的額外說明,請在 https://github.com/nuget/NuGetGallery/issues 上建立問題。