﻿# 使用 NuGet 更新套件時將 jQuery 升級到 2.0.2 應該如何降級

我們在 Visual Studio 2012 裡面會使用 [NuGet](http://nuget.org/) 管理員管理那些常用的開發函式庫，例如 [jQuery](http://nuget.org/packages/jQuery/)、[Json.NET](http://nuget.org/packages/Newtonsoft.Json/)、 [EntityFramework](http://nuget.org/packages/EntityFramework/5.0.0)、[ELMAH](http://nuget.org/packages/elmah/)、… 等等。各位可能也了解到，目前 jQuery 最新版為 2.0.2 版，這個最新版基本上僅支援 IE9 以上瀏覽器 ( IE8 以下不支援 )，因此大部分人應該都不會選擇安裝最新版的 jQuery，但是在使用 NuGet 安裝或更新套件的過程中，卻有可能不小心將 jQuery 套件自動升級到最新版，導致網站發生許多相容性的問題。今天這篇文章主要就是說明如何手動將 jQuery 降級到 1.x 的版本。**註:** 此方法適用於任何 NuGet 套件，所以若要指定降級版本，都可以參考這篇文章。

前陣子，我就有同事因為專案中因為需要安裝某個 jQuery 相關套件，安裝的過程中竟然順便把 jQuery 給升級到 2.x 的版本，他自己卻完全沒有意識到 jQuery 被升級了，被卡了兩個多小時才找我求救，雖然給了要降版的建議，但透過 **管理 NuGet 套件** 的 GUI 介面，卻不到將現有套件降版的功能。

[![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/4ed67e82b92b8aacce42-image_thumb_174.png)](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/98dc6a32f570746c5844-image_2122.png)

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

[![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/f24d150409aad24f5057-image_thumb_175.png)](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/d04a1a58cf5e54f50e22-image_2123.png)

如果你真的要將特定 NuGet 套件降版安裝，主要有 3 個步驟：

1.  開啟**套件管理器主控台**
2.  強制移除特定 NuGet 套件
3.  指定安裝特定 NuGet 套件的特定版本

分別說明如下：

**1\. 開啟套件管理器主控台**

從主選單選取: **檢視** / **其他視窗** / **套件管理器主控台**

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/792bd73a1f30604494da-image_2124.png)

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/2e3efd0609ea3b78ea15-image_2125.png)

**2\. 強制移除特定 NuGet 套件**

要移除特定套件，必須先找出該套件的 **識別碼** ( ID )，你可以透過以下步驟查詢出來：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/ca06c074304b0d3d1903-image_2126.png)

[![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/1282cb7bb74e4907abd7-image_thumb_176.png)](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/94f325dde4ced57b5c35-image_2127.png)

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

```
Uninstall-Package jQuery -Force
```

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/075afcaf06ba229cf8da-image_2128.png)

**3\. 指定安裝特定 NuGet 套件的特定版本**

在 **套件管理器主控台** 輸入以下指令，其中 **jQuery** 是套件識別碼，而 **\-Version** 則是指定套件版本：

```
Install-Package jQuery -Version 1.8.3
```

**註**：如果你的 Visual Studio 方案中有多個專案，安裝時須注意是否安裝到正確的專案，如下紅框處：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/843b5bb212e02c6fd76a-image_2129.png)

如果你想查詢該套件到底有多少版號，你可以直接連到 NuGet Gallery 網站，查詢該套件曾經發布過那些版本，其網址格式如下：

```
http://nuget.org/packages/套件識別碼/
```

例如:

```
http://nuget.org/packages/jQuery/
```

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/5bc6c798345e290aa68a-image_2130.png)

**※ 補充說明 **※****

如果你專案中的 jQuery 套件是 jQuery 1.8.3，而試圖安裝了一個套件會相依於 jQuery 更新版本的情況 ( 例如 [Bootstrap](http://nuget.org/packages/Twitter.Bootstrap) 套件會要求安裝 jQuery 1.9.1 以上版本 )，那麼在安裝套件的過程中，NuGet 會自動將你現有的 jQuery 1.8.3 升級到最新版，也就會造成本篇文章所提及的狀況。

**相關連結**

-   [NuGet Gallery | Home](http://nuget.org/)
-   [NuGet Gallery | Packages](http://nuget.org/packages)
-   [Downgrading with Nuget](https://web.archive.org/web/20140111222021/http://colinbul.wordpress.com/2012/04/26/downgrading-with-nuget/)
