因为是转载文章 在此标明出处,以前有文章是转的没标明的请谅解,因为有些已经无法找到出处,或者与其它原因。
如有冒犯请联系本人,或删除,或标明出处。
因为好的文章,以前只想收藏,但连接有时候会失效,所以现在碰到好的直接转到自己这里。
原文 出处http://blog.miniasp.com/post/2013/06/10/Downgrading-jQuery-version-with-NuGet.aspx
們在 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/套件識別碼/
http://nuget.org/packages/jQuery/
※ 補充說明 ※
如果你專案中的 jQuery 套件是 jQuery 1.8.3,而試圖安裝了一個套件會相依於 jQuery 更新版本的情況 ( 例如 Bootstrap 套件會要求安裝 jQuery 1.9.1 以上版本 ),那麼在安裝套件的過程中,NuGet 會自動將你現有的 jQuery 1.8.3 升級到最新版,也就會造成本篇文章所提及的狀況。
这里分享一个我在用的解决方法,在对应的package.config文件里,找到jQuery配置加上allowedVersions="[1.9,2)",比如:
<package id="jQuery" version="1.10.1" allowedVersions="[1.9,2)" />
这样就等于告诉NuGet只推送版本大于1.9但是小于2的jQuery package,之后就可以用NuGet自动更新1.x系列的jQuery,并且不用担心2.x被误取下来。
=====================更详细的=============================
http://blchen.com/nuget-keep-use-jquery-1-subsequent-versions/
Query在2.0里去除了对IE678的支持,并且建议需要兼容IE678的开发人员继续使用1.x的版本。大部分在VS上做开发的人,都是通过NuGet来管理jQuery包的。由于现在jQuery在NuGet里只有一个分类并且最新版本已经是2.x,这给需要用NuGet来继续管理jQuery1.x包的更新的童鞋带来很大不便。
最好的解决方法应该是在NuGet的维护者分别创建jQuery 1和jQuery 2的对应包。在这之前,似乎只能手工的用NuGet命令行工具来避免升级到2.0。比如,用下面的命令升级jQuery到版本1.10.1
Install-Package jQuery -Version 1.10.1
如果你已经不小心把jQuery 2.x给装上了,再重新装1.x的时候NuGet就会报错Already referencing a newer version of ‘jQuery’.可以通过在NuGet控制台跑下面命令解决
Uninstall-Package jQuery -Force Install-Package jQuery -version 1.10.1
今天发现一个更赞的解决方法,只要在package.config里指定一下allowedVersions就可以避免jQuery 2.x的版本被NuGet推送了,具体方法是把package里的jQuery这行改成下面格式:
<package id="jQuery" version="1.10.1" allowedVersions="[1.9,2)" targetFramework="net45" />
这么写表示意思是,只允许推送版本号大于1.9并且小于2的jQuery包。
========================
如果在VS 中查看 还是加载了jquery2.0 版本
1.在VS查找下是否存在jquery2.0的文件, 虽然在包配置中没配置它,但是他貌似还是会被加载进来的
2.其它插件依赖jquery2.0 导致自动升级 加载