我們在 Visual Studio 2012 裡面會使用 NuGet 管理員管理那些常用的開發函式庫,例如 jQuery、Json.NET、 EntityFramework、ELMAH、… 等等。各位可能也了解到,目前 jQuery 最新版為 2.0.2 版,這個最新版基本上僅支援 IE9 以上瀏覽器 ( IE8 以下不支援 ),因此大部分人應該都不會選擇安裝最新版的 jQuery,但是在使用 NuGet 安裝或更新套件的過程中,卻有可能不小心將 jQuery 套件自動升級到最新版,導致網站發生許多相容性的問題。今天這篇文章主要就是說明如何手動將 jQuery 降級到 1.x 的版本。註: 此方法適用於任何 NuGet 套件,所以若要指定降級版本,都可以參考這篇文章。
前陣子,我就有同事因為專案中因為需要安裝某個 jQuery 相關套件,安裝的過程中竟然順便把 jQuery 給升級到 2.x 的版本,他自己卻完全沒有意識到 jQuery 被升級了,被卡了兩個多小時才找我求救,雖然給了要降版的建議,但透過 管理 NuGet 套件 的 GUI 介面,卻不到將現有套件降版的功能。

若要強制解除安裝 jQuery,也會因為相依性等問題導致無法解除安裝:

如果你真的要將特定 NuGet 套件降版安裝,主要有 3 個步驟:
- 開啟套件管理器主控台
- 強制移除特定 NuGet 套件
- 指定安裝特定 NuGet 套件的特定版本
分別說明如下:
1. 開啟套件管理器主控台
從主選單選取: 檢視 / 其他視窗 / 套件管理器主控台


2. 強制移除特定 NuGet 套件
要移除特定套件,必須先找出該套件的 識別碼 ( ID ),你可以透過以下步驟查詢出來:


在 套件管理器主控台 輸入以下指令,其中 jQuery 是套件識別碼,而 -Force 則是強制移除的意思:
Uninstall-Package jQuery -Force

3. 指定安裝特定 NuGet 套件的特定版本
在 套件管理器主控台 輸入以下指令,其中 jQuery 是套件識別碼,而 -Version 則是指定套件版本:
Install-Package jQuery -Version 1.8.3
註:如果你的 Visual Studio 方案中有多個專案,安裝時須注意是否安裝到正確的專案,如下紅框處:

如果你想查詢該套件到底有多少版號,你可以直接連到 NuGet Gallery 網站,查詢該套件曾經發布過那些版本,其網址格式如下:
http://nuget.org/packages/套件識別碼/
例如:

※ 補充說明 ※
如果你專案中的 jQuery 套件是 jQuery 1.8.3,而試圖安裝了一個套件會相依於 jQuery 更新版本的情況 ( 例如 Bootstrap 套件會要求安裝 jQuery 1.9.1 以上版本 ),那麼在安裝套件的過程中,NuGet 會自動將你現有的 jQuery 1.8.3 升級到最新版,也就會造成本篇文章所提及的狀況。
相關連結