NuGet 管理 升降级

因为是转载文章 在此标明出处,以前有文章是转的没标明的请谅解,因为有些已经无法找到出处,或者与其它原因。

如有冒犯请联系本人,或删除,或标明出处。

因为好的文章,以前只想收藏,但连接有时候会失效,所以现在碰到好的直接转到自己这里。

原文 出处http://blog.miniasp.com/post/2013/06/10/Downgrading-jQuery-version-with-NuGet.aspx


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

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

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

 

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

  1. 開啟套件管理器主控台
  2. 強制移除特定 NuGet 套件
  3. 指定安裝特定 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 升級到最新版,也就會造成本篇文章所提及的狀況。



这里分享一个我在用的解决方法,在对应的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 导致自动升级 加载



评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值