Visual Studio 中的套件管理員主控台會使用 PowerShell 命令與 NuGet 套件互動。 當無法透過 套件管理員 UI 執行作業時,您可以使用主控台。 您也可以在主控台中使用 dotnet CLI 或 NuGet CLI 命令。
本文說明如何在套件管理員主控台中使用 PowerShell 命令來尋找、安裝、更新和解除安裝 NuGet 套件。 如需完整的套件管理員主控台 PowerShell 命令參考,請參閱 PowerShell 參考。
這很重要
本文中的 PowerShell 命令和引數是 Visual Studio 套件管理員主控台特有的。 這些命令與您可以在一般 PowerShell 環境中使用的 PackageManagement 模組命令 不同。 每個環境都有其他環境中無法使用的命令,而且具有相同名稱的命令的特定引數可能會有所不同。
主控台可用性
從 Visual Studio 2017 開始,當您在 Visual Studio 中建立任何與 .NET 相關的工作負載時,NuGet 和 NuGet 套件管理員會自動安裝。 您也可以在 Visual Studio 安裝程式中選取個別元件>、程式碼工具>、NuGet 套件管理員,以安裝套件管理員。
您也可以在 [工具>] [延伸模組和更新 ] 或 [ 延伸模組] 功能表下搜尋 NuGet 套件管理員延伸模組。 如果您無法在 Visual Studio 中使用延伸模組安裝程式,您可以直接從 https://dist.nuget.org/index.html下載延伸模組。
套件管理員主控台內建於 Windows 上 Visual Studio 的套件管理員中。 Visual Studio Code 和 Mac 版 Visual Studio 不包含主控台。 Mac 版 Visual Studio 具有管理 NuGet 套件的 UI,而且對等的主控台命令可透過 NuGet CLI 取得。 如需詳細資訊,請參閱 在 Mac 版 Visual Studio 中安裝和管理 NuGet 套件。
快速尋找並安裝套件
若要使用套件管理員主控台快速尋找和安裝套件:
在 Visual Studio 中開啟您的專案或解決方案,然後選取 [工具]> [NuGet 套件管理員>] [套件管理員主控台] 以開啟 [套件管理員主控台] 視窗。
在主控台中,輸入
Find-Package關鍵字以尋找您要安裝的套件。 例如,若要尋找包含關鍵字elmah的套件,請執行下列命令。 如果您已經知道所需的套件名稱,請略過此步驟。Find-Package elmah找到名稱後,使用
Install-Package命令安裝套件。 例如,若要安裝Elmah.MVC套件,請輸入:Install-Package Elmah.MVC
如需這些命令的詳細資訊,請參閱 尋找套件 和 安裝套件 一節。
小提示
許多主控台作業都依賴於在 Visual Studio 中開啟具有已知路徑名稱的解決方案。 如果您有未儲存的解決方案,或沒有解決方案,您會看到錯誤 解決方案未開啟或未儲存。請確保您有一個開放且保存的解決方案。 若要更正錯誤,請建立並儲存解決方案,或儲存未儲存的解決方案。
主控台控制項
若要在 Visual Studio 中開啟套件管理員主控台,請從頂端功能表中選取 [工具]> [NuGet 套件管理員>] [套件管理員主控台]。 控制台是一個 Visual Studio 窗口,您可以根據需要排列和定位它。 如需詳細資訊,請參閱 在 Visual Studio 中自訂視窗配置。
依預設,主控台命令會針對視窗頂端控制項中顯示的特定套件來源和專案進行操作:
選取不同的套件來源或專案會變更後續命令的預設值。 若要覆寫單一命令的這些設定,而不變更預設值,大部分的主控台命令支援 -Source 和 -ProjectName 選項。
若要管理套件來源,請選取齒輪圖示,以開啟 [工具>選項]> [NuGet 套件管理員>] 套件來源對話方塊。 專案選取器旁邊的控制項會清除主控台的內容。
最右邊的按鍵會中斷長時間執行的命令。 例如,執行 Get-Package -ListAvailable -PageSize 500 指令會列出預設來源(例如 nuget.org)上的前 500 個可用套件,可能需要幾分鐘才能完成。
尋找包裹
若要在預設來源中尋找套件,請使用 Find-Package。
若要尋找並列出包含特定關鍵字的套件:
Find-Package <keyword1> Find-Package <keyword2>若要尋找並列出名稱以字串開頭的套件:
Find-Package <string> -StartWith依預設,
Find-Package會傳回 20 個套件的清單。 用於-First顯示更多套件。 例如,若要顯示前 100 個套件,請使用:Find-Package <keyword> -First 100若要列出特定套件的所有版本:
Find-Package <PackageName> -AllVersions -ExactMatch
安裝套件
若要將套件安裝到預設專案中,請使用 Install-Package <PackageName>。
Install-Package 主控台指令會採取下列動作:
- 在安裝 NuGet 套件時會發生什麼事中,這些步驟是否會發生?
- 在主控台視窗中顯示適用的授權條款,並附有默示同意。 如果您不同意這些條款,則應解除安裝該套件。
- 在專案檔和 方案總管 中的 參考 節點下新增封裝的參考。 您必須先儲存專案,才能看到專案檔中的變更。
依預設, Install-Package 會將套件新增至主控台視窗指定的預設專案。 若要將套件新增至非預設專案,請使用 選項 -ProjectName 。 例如,若要將套件新增至 Elmah.MVC 非預設 UtilitiesLib 專案,請執行下列命令:
Install-Package Elmah.MVC -ProjectName UtilitiesLib
卸載套件
若要從預設專案解除安裝套件,請使用 Uninstall-Package <PackageName>。 如果您需要尋找套件名稱,請使用 Get-Package 來查看預設專案中安裝的所有套件。
Uninstall-Package 會採取下列動作:
- 從專案和任何管理格式中移除套件的參照。 參考不再出現在 方案總管 中。 您可能需要重建專案,以移除 bin 資料夾中的參照。
- 反轉安裝套件對 app.config 或 web.config所做的任何變更。
- 如果沒有剩餘的套件使用先前安裝的相依性,則會移除這些相依性。
若要解除安裝套件及其所有未使用的相依性,請執行:
Uninstall-Package <PackageName> -RemoveDependencies
若要解除安裝套件,即使其他套件相依於該套件,請執行:
Uninstall-Package <PackageName> -Force
更新套件
若要更新套件,請使用 Get-Package 和 Update-Package。 您可以執行下列命令:
若要檢查是否有較新的版本可用於任何已安裝的套件:
Get-Package -updates若要更新特定套件:
Update-Package <PackageName>若要更新專案中的所有套件:
Update-Package -ProjectName <ProjectName>若要更新解決方案中的所有套件:
Update-Package
在主控台中使用 NuGet CLI
您也可以使用 NuGet CLI 執行大部分的主控台作業。 不過,PowerShell 主控台命令會在 Visual Studio 儲存的專案和解決方案的內容中運作,而且通常比其對等的 NuGet CLI 命令執行更多動作。 例如,安裝 Install-Package 套件時會將參考新增到專案檔案中,但 NuGet 命令行工具不會這樣做。 基於這個理由,在 Visual Studio 中工作的開發人員通常偏好使用主控台命令,而不是 NuGet CLI。
若要在套件管理員主控台中使用 NuGet CLI 命令,請安裝 NuGet.CommandLine 套件。
Install-Package NuGet.CommandLine
上述命令會安裝最新版本的 NuGet CLI。 若要安裝特定版本,請使用選項 -Version 。 例如,若要安裝 4.4.1 版,請輸入:
Install-Package NuGet.CommandLine -Version 4.4.1
安裝 NuGet.CommandLine 套件之後,您可以透過套件管理員主控台執行所有 NuGet CLI 命令。
擴充套件管理員主控台
某些套件會為主控台安裝新命令。 例如, MvcScaffolding 建立類似 Scaffold的命令,以產生 ASP.NET MVC 控制器和檢視:
設定 NuGet PowerShell 的設定檔
您可以建立 PowerShell 設定檔,讓常用的命令在所有 PowerShell 內容中都可用,這樣您就不會在會話之間遺失 PowerShell 設定。 NuGet 支援 NuGet 特定的配置檔,通常位於 %UserProfile%\Documents\WindowsPowerShell\NuGet_profile.ps1。
若要尋找您的使用者設定檔位置,請在主控台中輸入 $profile :
$profile
C:\Users\<user>\Documents\WindowsPowerShell\NuGet_profile.ps1
若要確認該位置是否存在設定檔,請輸入 test-path $profile。 如果指令傳回 False,您必須在該位置建立具有指定名稱的設定檔。 如需詳細資訊,請參閱 Windows PowerShell 設定檔。