尋找及評估專案的 NuGet 套件

當您啟動 .NET 專案或識別應用程式或服務中的功能需求時,您通常可以安裝現有的 NuGet 套件,以節省建立您自己的套件的時間和麻煩。 現有的套件可能來自 nuget.org 公用集合,或來自貴組織或其他合作物件所提供的私人來源。

尋找套件

您可以直接在 https://nuget.org/packages、或從 Visual Studio 封裝管理員 UI封裝管理員 Console 找到套件,nuget.org 做為來源。 來自 nuget.org 的所有套件都會定期掃描病毒。

nuget.org/packages,您會看到 NuGet 套件清單,其中列出所有 .NET 專案上最受歡迎的套件。 其中一些套件可能適用於您的專案。

Screenshot that shows the default view of nuget.org/packages with the most popular packages at the top.

若要搜尋套件,請在頁面頂端的 [搜尋] 方塊中輸入套件名稱或搜尋字詞。 您可以使用 進階搜尋語法 來篩選搜尋。

進階篩選和排序

在 nuget.org/packages,您可以使用進階篩選和排序選項來精簡搜尋結果。

Screenshot that shows the filtering and sorting options on nuget.org.

使用 Frameworks 篩選來顯示以特定 .NET Framework 為目標的套件(若要深入瞭解,請參閱目標 Framework):

  • 選取其中一個 .NET Framework 產生複選框,會將搜尋結果篩選為與該產生內任何個別目標 Framework 相容的套件。 例如,選取 .NET 會傳回與任何新式 .NET Framework 相容的套件,包括 net5.0 透過 net8.0

    Screenshot that shows the Framework filters on nuget.org.

  • 使用右側箭號展開這其中一個架構世代,會顯示您可以篩選結果的個別目標 Framework Monikers (TFM)。 例如,選取 net5.0 會傳回與 『.NET 5.0』 架構相容的套件。

  • 根據預設,套件會依擴充的計算相容架構清單進行篩選。 如果您想要依其明確鎖定的資產架構來篩選套件,請取消選取 [ 包含相容的架構] 複選框。

  • 結合多個架構篩選會顯示符合所有所選篩選條件的搜尋結果,也就是落在選取範圍交集的套件。 例如,選取 netcoreapp3.1net45一起會顯示以 『.NET Core 3.1』 和 『.NET Framework 4.5』 為目標的套件。 選取 [ .NET Core 架構產生] 複選框, net45 並將複選框同時傳回以 '.NET Framework 4.5' 為目標的套件,以及至少一個 '.NET Core' TFM (netcoreapp1.0netcoreapp3.1)。

    • 或者,如果您想要查看符合任何一個架構篩選條件的套件,請選取 [架構篩選模式] 選項上的 [任何] 單選按鈕。 現在,選取 netcoreapp3.1net5.0會顯示以 『.NET Core 3.1』 或 『.NET 5.0』 為目標的套件。 netcoreapp3.1一起選取複選框和.NET架構產生複選框,將會傳回以 『.NET Core 3.1』 或任一 '為目標的套件。NET 的TFM(net5.0透過 net8.0)。
  • 您可以在這裡深入瞭解如何評估套件支持的架構及其與專案的相容性。

使用套件 型態 篩選來顯示特定類型的套件:

根據預設,NuGet 會列出所有版本的套件,包括發行前版本和 Beta 版本。 在 [選項]段中,取消選取 [包含發行前版本] 複選框,只列出穩定且發行的套件版本。

若要套用變更,請選取 [ 套用]。 若要回到預設值,請選取 [ 重設]。

使用頁面右上方的 [排序依據] 下拉式清單,依數個準則排序列表:

  • 相關性 是預設值,並根據內部評分演算法來排序結果。
  • 下載 會依下載總數依遞減順序排序搜尋結果。
  • 最近更新 的排序結果會依最新的套件版本建立日期,以遞減的時間順序排序。

搜尋語法

在 nuget.org、NuGet CLI 和 Visual Studio 內的套件搜尋查詢全都使用相同的語法。 其他套件來源,例如 Azure Artifacts 或 GitHub 套件存放庫,可能會使用不同的語法,或可能不支援進階篩選。

  • 您可以使用 語法來搜尋封裝 id、、、、titletagsversionauthordescriptionsummaryowner 屬性。<property>:<term>packageid

  • 搜尋適用於關鍵詞和描述,且不區分大小寫。 例如,下列字串會搜尋 id 字串 nuget.core的屬性:

    id:NuGet.Core
    ID:nuget.core
    Id:NUGET.CORE

  • 搜尋 id 屬性比對子字串,而 packageid 並使用 owner 完全不區分大小寫的相符專案。 例如:

    PackageId:jquery 會搜尋確切的套件識別碼 jquery
    Id:jquery 會搜尋包含字串 jquery的所有套件標識碼。

  • 您可以同時搜尋多個值或屬性。 例如:

    id:jquery id:ui 在屬性中 id 搜尋多個字詞。
    id:jquery tags:validation 搜尋多個屬性。

  • 搜尋會忽略不支持的屬性,因此 invalid:jquery ui 與搜尋 ui相同,並 invalid:jquery 傳回所有套件。

判斷支持的架構

只有在套件支援的 .NET Framework 包含專案的目標架構時,NuGet 才會將套件安裝到專案中。 如果套件不相容,NuGet 就會發出錯誤。

有數種方式可判斷套件支援的架構:

  • 在搜尋頁面上,套件支援的架構會顯示為套件標識元下方的徽章。 這些徽章顯示 .NET、.NET Core、.NET Standard.NET Framework 世代的最低支持架構版本。 套件將與任何等於或高於所顯示徽章版本的架構版本相容。

    「深藍色」徽章代表明確的目標架構,而「淺藍色」徽章則代表計算相容的架構。

    按兩下徽章會將您重新導向至 nuget.org 上的套件詳細數據頁面。套件 頁面上的 [架構] 索引標籤會顯示支援架構的完整清單。

    Screenshot of the Framework badges on nuget.org's search page.

  • 在套件的 nuget.org 頁面上,支持的架構會出現在套件識別碼下方,並在 [架構] 索引標籤上顯示,但並非所有套件都顯示支持的架構。

    Screenshot of the Frameworks UI and tab on the package page at nuget.org.

  • 選取 [關於] 底下的 [下載套件],手動下載套件。 將下載套件的擴展名從 .nupkg 變更為 .zip、開啟 .zip資料夾,並檢查其 lib 資料夾。 每個支持的架構都有子資料夾,每個都有以目標架構Moniker(TFM) 命名的子資料夾。 如需詳細資訊,請參閱 目標 Framework。 如果 lib沒有任何子資料夾,而且只有單一 DLL,請嘗試安裝套件以探索其相容性。

  • 嘗試在 Visual Studio 封裝管理員 控制台中使用 Install-Package 將套件安裝到專案中。 如果套件不相容,主控台輸出會顯示套件支援的架構。

發行前版本套件

許多套件作者會提供預覽和 Beta 版本,因為它們會持續改善並尋求有關最新修訂的意見反應。 根據預設,nuget.org 在其套件清單中顯示發行前版本套件和搜尋結果。

僅列出和搜尋穩定版本:

  • 在 nuget.org,取消選取進階搜尋面板中的 [包含發行前版本 ] 複選框。
  • 在 Visual Studio NuGet 封裝管理員 UI 中,取消選取 [搜尋] 方塊旁的 [包含發行前版本] 複選框。

Visual Studio 封裝管理員 主控台、NuGet CLI 和 dotnet CLI 工具預設不包含發行前版本。 若要包含發行前版本:

  • 在 封裝管理員 控制台中,搭配 、Get-PackageInstall-PackageSync-PackageUpdate-Package 命令使用 -IncludePrerelease 參數Find-Package。 如需詳細資訊,請參閱 PowerShell 參考

  • 針對 NuGet CLI,請使用 -prerelease 參數搭配 installupdatedeletemirror 命令。 如需詳細資訊,請參閱 NuGet CLI 參考

  • 針對 dotnet CLI,使用 -v 自變數指定發行前版本。 如需詳細資訊,請參閱 dotnet add 套件參考

原生 C++ 套件

Visual Studio C++ 專案可以使用原生 C++ NuGet 套件。 安裝這些套件會啟用 [ 管理 NuGet 套件 ] 操作功能表命令、公開 native 目標架構,並提供 MSBuild 整合。

若要在 nuget.org/packages 上尋找原生套件,請使用 tag:native搜尋 。 這類套件通常會提供 .targets.props 檔案,NuGet 會在新增套件時自動匯入。

評估套件

評估套件實用性的最佳方式是試用套件。當您使用它時,您會相依於套件,因此您必須確定其健全且可靠。 不過,安裝套件並直接測試它相當耗時。 您可以使用套件頁面上的資訊,在 nuget.org/packages 深入瞭解套件的品質。

  • 套件 清單和套件頁面上套件標識符旁的前置詞保留 複選標記表示套件擁有者已套用並已 獲得保留的套件識別碼前置詞。 若要符合標識符 前置詞保留準則,套件擁有者必須清楚識別自己及其套件。

    Screenshot that shows Prefix Reserved on a package's page.

  • 套件頁面右側數據行中的下載會顯示 [總計]、[目前版本] 和 [每日平均下載]。 大量表示套件已在許多開發人員中證明自己。

    Screenshot that shows Download statistics on a package's page.

    選取 [下載] 旁的 [完整統計數據],以查看依版本號碼顯示過去六周套件下載的頁面。 更多開發人員所使用的版本通常是較佳的選擇。

  • 套件頁面上的 [ 使用方式] 索引卷標會顯示依存於此套件的前五大熱門 nuget.org 套件和 GitHub 存放庫。 相依於此套件的套件和存放庫稱為 相依專案。 相依套件和存放庫可以視為此套件的內建,因為它們選擇信任並相依於它。

    Screenshot that shows the Used By list.

    依套件的最新穩定版本 必須相依於此套件的任何版本。 此定義可確保列出的相依套件是套件作者信任和相依於套件決策的最新反映。 相依專案清單不會顯示發行前版本相依專案,因為它們尚未被視為全心全意背書。 下列範例顯示哪些套件顯示為相依專案:

    相依套件版本 列為相依套件的相依套件?
    v1.0.0
    v1.1.0 (最新穩定) 取決於此套件
    v1.2.0-preview
    TRUE,最新的穩定版本取決於此套件
    v1.0.0 取決於此套件
    v1.1.0 (最新穩定)
    v1.2.0-preview
    FALSE,最新的穩定版本不相依於此套件
    v1.0.0 取決於此套件
    v1.1.0 (最新穩定)
    v1.2.0-preview 取決於此套件
    FALSE,最新的穩定版本不相依於此套件

    GitHub 存放庫的星號表示其與 GitHub 用戶的受歡迎程度。 如需 GitHub 明星和存放庫排名系統的詳細資訊,請參閱 關於星號

    注意

    [ 使用方式 ] 區段會自動產生,而不需要人為檢閱,而且僅供參考之用。

  • 套件頁面上的 [ 版本] 索引卷標會顯示 [版本]、 [下載]、 [上次更新 日期] 和套件版本的嚴重弱點。 您安裝的版本不應該有任何高嚴重性弱點。 維護良好的套件具有最近的更新和較長的版本歷程記錄。 忽略的套件有少數且早前的更新。

    Screenshot that shows the Versions list.

套件頁面的右欄有其他資訊連結:

Screenshot that shows the right column of the package page.

  • 如果有的話,請選取 [項目網站],以查看作者所提供的支持選項。 具有專用網站的專案通常受到很好的支援。

  • 選取 [來源存放庫 ] 以移至套件的 Git 原始程式碼存放庫。 許多作者會在開放原始碼存放庫中維護其套件,讓使用者可以直接參與錯誤修正和功能改善。 套件的貢獻歷程記錄是一個很好的指標,指出有多少開發人員積极參與。

  • 選取 <授權類型> 授權 以查看套件的 MIT 或其他授權。 如果套件未指定授權條款,請連絡套件擁有者。

  • 選取 [擁有者] 底下 的任何套件擁有者 ,以查看他們已發佈的其他套件。 擁有多個套件的擁有者更有可能繼續支援其工作。 選取 [擁有者] 旁的 [連絡擁有者] 以直接連絡套件開發人員。

擷取授權資訊

某些 NuGet 用戶端和 NuGet 摘要可能無法呈現授權資訊。 為了在這類情況下維持回溯相容性,授權 URL 會指向此文件,說明如何擷取授權資訊。

如果選取套件的授權 URL 會帶您前往此頁面,則表示套件包含授權檔案,並:

  • 您已連線到不知道如何將授權資訊解譯並呈現給用戶端的摘要,或
  • 您使用的用戶端不知道如何解譯和讀取摘要所提供的授權資訊,或
  • 這兩種案例的組合。

若要讀取套件內授權檔案中的資訊:

  1. 手動下載套件,並將其內容解壓縮到資料夾。
  2. 開啟 資料夾根目錄的 .nuspec 檔案。
  3. 檢查 標籤 <license> ,例如 <license type="file">license\license.txt</license>。 範例卷標指出授權檔案名為 license.txt ,且位於名為 license 的子資料夾中。
  4. 流覽至指定的位置,然後開啟指定的檔案。

如需 MSBuild 相當於在 .nuspec 中設定授權的相關信息,請參閱封裝授權表達式或許可證檔

下一步