86

像大多数人一样,我使用jQuery Nuget 包来保持最新状态。

然而,随着 jQuery 2.0 的发布,我现在被提示将 jQuery 1.9.1 升级到 2.0。目前,我的网站上有足够多的访问者使用“古老”版本的浏览器,我宁愿坚持使用 1.9.x 和jQuery Migrate

在检查包的更新(jQuery 或其他)时,是否有告诉 Nuget 坚持使用特定版本(1.9.x)?

我正在使用 Visual Studio 2010/2012 扩展,但如果我需要使用 VS 中的命令行界面来解决这个问题,我当然会。

注意:在我脑海中的一件事是他们搞砸了更新。由于 jQuery 1.9.x 和 2.0.x/2.x 完全不同,它们似乎应该创建一个 jQuery 2(.0.x|.x) 包。

当然,真正想要更新到 2.x 的人必须了解它并切换他们想要安装的软件包。但鉴于它包含重大更改,也许这样更好?

4

4 回答 4

117

在我看来,这是包作者的错误。删除对多个浏览器的支持的更新应该被制作成一个单独的版本 2 nuget 包并相应地进行宣传,即带有重要的免责声明。1.9 库不是遗留的,将来会收到进一步的更新。我已经与包作者保持联系,如果收到回复,我会写更多。

在此期间,您可以通过在 中使用以下语法来限制包的版本packages.config

<package id="jQuery" version="1.9.1" allowedVersions="[1.9.1]" />

这里有关于版本约束的更多信息:

http://docs.nuget.org/docs/reference/Versioning

进行配置更改后,更新不应将您的 jQuery 包升级到 2.0 版本。UI 包管理器过去曾出现过不尊重allowedVersions属性 ( https://nuget.codeplex.com/workitem/1891 ) 的问题,因此如果遇到此问题,您可能必须使用命令行。

但是,这些都不能解决更新 1.9 分支时发生的问题,因为软件包提要现在将在 2.0+ 轨道上。我假设您必须切换到专门为支持“旧”1.x 版本而编写的新 nuget 包,或者每次手动复制脚本。

无论如何,当我了解更多信息时,我会更新它。

编辑:

包作者表示,未来将同时支持 1.x2.x 路径,即包源将包含并行版本,而不是拆分它们。据我所知,解决方案是在包配置级别使用版本约束来防止更新到 2.x 版本,例如:

<package id="jQuery" version="1.9.1" allowedVersions="[1.9.1,2)" />

(指定 min 和 max 版本allowedVersions应该允许更新而不冒切换到 2.x 版本的风险。顺便说一下,右括号看起来很奇怪,但它是正确的 - 它表示“小于版本 2”。)

于 2013-04-22T16:03:50.213 回答
19

如何指定版本?

PM> Install-Package jQuery -Version 1.9.1

参考资料: http: //nuget.org/packages/jQuery/1.9.1

于 2013-04-22T08:41:21.060 回答
8

Nuget 现在有一个jquery1 包,它只跟踪 1.x 分支,因此您应该能够将核心 jQuery 包换成这个包。

于 2013-09-26T07:52:37.387 回答
4

我为@TeYoU 从顶部组合了两种解决方案

首先,我从包管理器控制台安装了包:

工具菜单 -> 库包管理器 -> 包管理器控制台

PM> Install-Package jQuery -Version 1.9.1

然后我编辑了 packages.config,正如@Dave R. 所说:

<package id="jQuery" version="1.9.1" allowedVersions="[1.9.1,2)" />

然后我使用 Nuget Manager 更新到当前版本,目前是 1.10.2,它就像一个魅力。

于 2013-09-10T16:39:27.973 回答