NuGet 常見問題集

若要了解 NuGet.org 的常見問題,例如 NuGet.org 帳戶問題,請參閱 NuGet.org 常見問題集

一般

執行 NuGet 所需的作業為何?

安裝指南包含 UI 和命令列工具的所有資訊。

NuGet 支援 Mono 嗎?

命令列工具 nuget.exe 會在 Mono 3.2+ 下建置並執行,而且可以在 Mono 中建立套件。

雖然 nuget.exe 完整運作於 Windows 上,但是 Linux 和 OS X 上已有已知問題。請參閱 GitHub 上的 Mono 問題

圖形化用戶端可作為 MonoDevelop 的增益集。

如何判斷套件所包含的內容,以及它對我的應用程式而言是否穩定而且有用?

了解套件的主要來源是其在 nuget.org 上的清單頁面 (或另一個私人摘要)。 nuget.org 上的每個套件頁面都會包含套件的描述、其版本歷程記錄和使用量統計資料。 套件頁面上的 [資訊] 區段也會包含專案網站的連結,而在專案網站中,您一般可以找到許多範例和其他文件協助您了解如何使用套件。

如需詳細資訊,請參閱尋找及選擇套件

Visual Studio 中的 NuGet

在不同的 Visual Studio 產品中,如何支援 NuGet?

如何檢查已安裝 NuGet 工具的確切版本?

在 Visual Studio 中,使用 [關於 Microsoft Visual Studio 的說明>] 命令,並查看 NuGet 旁顯示的版本 封裝管理員

或者,啟動 封裝管理員 主控台(工具 > NuGet 封裝管理員 封裝管理員 > 主控台),然後輸入 $host 以查看 NuGet 的相關信息,包括版本。

NuGet 支援哪些程式設計語言?

NuGet 一般適用於 .NET 語言,並且設計目的是將 .NET 程式庫帶入專案中。 在某些專案類型中,它也支援 MSBuild 和 Visual Studio 自動化,因此在各種程度上也支援其他專案和語言。

最新版的 NuGet 支援 C#、Visual Basic、F#、WiX、C++和 Q#。

NuGet 支援哪些專案範本?

NuGet 完整支援各種專案範本,例如 Windows、Web、Cloud、SharePoint、Wix 等等。

如何更新屬於 Visual Studio 範本的套件?

移至套件管理員 UI 中的 [更新] 索引標籤,然後選取 [全部更新],或使用套件管理員主控台中的 Update-Package 命令

若要更新範本本身,您需要手動更新範本存放庫。 請參閱有關本主題的 Xavier Decoster 部落格。 請注意,您必須自負這項作業的風險;因為,如果所有相依性的最新版本彼此不相容,則手動更新可能會損毀範本。

可以在 Visual Studio 外部使用 NuGet 嗎?

是,NuGet 只能直接從命令列運作。 請參閱安裝指南CLI 參考

NuGet 命令列

如何取得最新版的 NuGet 命令列工具?

請參閱安裝指南。 若要檢查目前安裝之工具的版本,請使用 nuget help

nuget.exe 的授權為何?

您可以根據 MIT 授權的規定來轉散發 nuget.exe。 您負責更新和維護您選擇要轉散發的任何 nuget.exe 複本。

可以擴充 NuGet 命令列工具嗎?

是的,可以將自定義命令新增至 nuget.exe,如 Rob Reynold 透過 Archive.org 提供文章中所述

NuGet 套件管理員主控台 (Windows 上的 Visual Studio)

如何在套件管理員主控台中存取 DTE 物件?

Visual Studio 自動化物件模型中的最上層物件稱為 DTE (開發工具環境) 物件。 此主控台透過名為 $DTE 的變數提供這個項目。 如需詳細資訊,請參閱<Visual Studio 擴充性>文件中的 Automation Model Overview (自動化模型概觀)。

我嘗試將 $DTE 變數轉換為類型 DTE2,但收到錯誤:無法將 "EnvDTE.DTEClass" 類型的 "EnvDTE.DTEClass" 值轉換為 "EnvDTE80.DTE2" 類型。 有什麼問題?

這是 PowerShell 如何與 COM 物件互動的已知問題。 嘗試下列作業:

`$dte2 = Get-Interface $dte ([EnvDTE80.DTE2])`

Get-Interface 是 NuGet PowerShell 主機所新增的 Helper 函式。

建立並發行套件

如何在摘要中列出我的套件?

我的程式庫有多個版本將目標設為不同的 .NET Framework 版本。 如何建置支援此項目的單一套件?

如何設定我自己的存放庫或摘要?

請參閱裝載套件概觀

如何將套件大量上傳至 NuGet 摘要?

請參閱大量發行 NuGet 套件 (jeffhandly.com)。

使用套件

可以在沒有網際網路連線的情況下安裝 NuGet 套件嗎?

是,請參閱 Scott Hanselman 的部落格文章 How to access NuGet when nuget.org is down (or you're on a plane (如何在 nuget.org 關閉 (或您在飛機上) 時存取 NuGet) (hanselman.com)。

如何將套件從預設套件資料夾安裝至不同位置?

請使用 nuget config -set repositoryPath=<path>Nuget.Config 中設定 repositoryPath 設定。

如何避免將 NuGet 套件資料夾新增至原始檔控制嗎?

Nuget.Config 中的 disableSourceControlIntegration 設定為 true。 此索引鍵作用於方案層級,因此需要新增至 $(Solutiondir)\.nuget\Nuget.Config 檔案。 從 Visual Studio 啟用套件還原時會自動建立這個檔案。

如何關閉套件還原?

安裝含遠端相依性的本機套件時,為什麼收到「無法解決相依性錯誤」?

將本機套件安裝至專案時,您需要選取所有來源。 這會彙總所有摘要,而不是只使用一個。 出現此錯誤的原因是本機存放庫使用者經常會因公司原則而想要避免不小心安裝遠端套件。

我在同一個資料夾中有多個專案,我該如何為每個專案使用不同的 packages.config 檔案?

在不同專案位於不同資料夾的大部分專案中,這在 NuGet 識別每個專案中的 packages.config 檔案時不是問題。 相同的資料夾中有 NuGet 3.3+ 和多個專案時,您可以將專案名稱插入至使用模式 packages.{project-name}.configpackages.config 檔案名稱,而且 NuGet 會使用該檔案。

因為每個專案檔都包含它自己的相依性清單,所以使用 PackageReference 時,這不是問題。

我在存放庫清單中看不到 nuget.org,要如何取得它?

  • https://api.nuget.org/v3/index.json 新增至來源清單,或者
  • 刪除 %appdata%\.nuget\NuGet.Config (Windows) 或 ~/.nuget/NuGet/NuGet.Config (Mac/Linux),讓 NuGet 重新加以建立。

我移轉至 PackageReference,為什麼我的組建失敗「此項目參考此計算機上遺漏的 NuGet 套件」?

在 packages.config 專案中,安裝具有 build props 或目標的套件時,NuGet 會新增 EnsureNuGetPackageBuildImports 目標,以確認 msbuild 內容已在建置前匯入套件。 target如果 已手動修改 ,NuGet 可能無法偵測移轉時需要移除的 NuGet。

如果您的專案是 PackageReference ,而且您在項目檔中仍然有此目標,則移除應該很安全。