当前位置: 首页 > news >正文

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

我們在 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 個步驟:

  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/套件識別碼/

例如:

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

 

※ 補充說明 

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

相关文章:

  • jquery radio取值,checkbox取值,select取值,radio选中,checkbox选中,select选中,及其相关...
  • 微软职位内部推荐-SW Engineer II for Embedded System
  • JS模块化
  • jQuery事件绑定 bind、 live、delegate和on的区别
  • 注册表检测 ms14-058 CVE-2014-4113
  • 通过java的Runtime.getRuntime()和System.getProperties()来获取系统的信息
  • myeclipse新建工程时的选择
  • Android自定义横向的ProgressBar
  • 真正高效的SQLSERVER分页查询(多种方案)
  • KVM虚拟化技术简介
  • 【Spark亚太研究院系列丛书】Spark实战高手之路-第3章Spark架构设计与编程模型第3节②...
  • 我对于 setWindow, setViewPort 与 translate 的理解
  • DG_Oracle DataGuard Failover主备节点切换(案例)
  • 怎样设计接口?
  • 选择器,可选择通道和选择键类
  • 深入了解以太坊
  • __proto__ 和 prototype的关系
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • Electron入门介绍
  • golang中接口赋值与方法集
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • java2019面试题北京
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • Java读取Properties文件的六种方法
  • js算法-归并排序(merge_sort)
  • MySQL用户中的%到底包不包括localhost?
  • Protobuf3语言指南
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 使用 @font-face
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 为什么要用IPython/Jupyter?
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • 2017年360最后一道编程题
  • RDS-Mysql 物理备份恢复到本地数据库上
  • 从如何停掉 Promise 链说起
  • ​configparser --- 配置文件解析器​
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • (5)STL算法之复制
  • (二)Linux——Linux常用指令
  • (五)Python 垃圾回收机制
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .net 4.0发布后不能正常显示图片问题
  • .Net 6.0 处理跨域的方式
  • .Net Core缓存组件(MemoryCache)源码解析
  • .Net Core与存储过程(一)
  • .net MySql
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .NET 动态调用WebService + WSE + UsernameToken
  • .Net 垃圾回收机制原理(二)
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .Net7 环境安装配置
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .NET值类型变量“活”在哪?