我可以将Nuget保留在jQuery 1.9.x / 1.x路径上(而不是升级到2.x)吗?


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的人将必须了解它并切换他们想要安装的软件包。但是,鉴于其中包含重大更改,也许更好吗?


2
由于1.10.x已经发布,因此我更新了标题以使其更加清晰。
James Skemp

2
因为他们保留了单个nuget包,所以如果他们只是向其中添加了两个jQuery版本,那就太好了,因此您将在单个nuget包中同时拥有1.x和2.x分支,然后可以引用您想要的一个。
约翰

@约翰-我...真的很喜欢这个主意。软件包实际上并没有更新对特定版本的任何引用。我唯一能想到的是实际上可能需要2.x或1.x的项目?但是,这是否会起作用很有趣。+1
James Skemp

Answers:


117

我认为,这是软件包作者的错误。删除了对多个浏览器的支持的更新应该被制成单独的版本2 nuget软件包,并进行相应的广告发布,即带有重要的免责声明。1.9库不是旧版,将来会进一步更新。我一直与软件包作者联系,如果收到回复,我会写更多。

在此期间,您可以使用以下语法来约束软件包的版本packages.config

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

这里有关于版本限制的更多信息:

http://docs.nuget.org/docs/reference/版本

更改配置后,更新不应将您的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)" />

(在中指定最低版本和最高版本allowedVersions都应允许进行更新,而不必冒险切换到2.x版本。顺便说一句,右括号看起来很奇怪,但它是正确的-表示“小于版本2”。)


Dave,感谢您与软件包作者联系。我确实在jQuery 2.0公告博客上发表了评论,这可能是一个问题。由于某种原因,我认为jQuery是由jQuery维护的,而jQuery Migrate是代表它们处理的。应该进一步挖掘。+1
James Skemp

@JamesSkemp-是的,是您在公告栏上的查询才把我带到这里的。整个情况比实际情况要复杂得多,但是我希望更新后的答案有所帮助。如果我遇到了一种处理版本控制的简便方法,那么一定会添加更多信息。
Dave R.

2
NuGet UI有一个错误,即使您在packages.config中不允许更新,也会导致其提示更新为jQuery 2.0。具有讽刺意味的是,jQuery 2.0如此接近NuGet 2.5。2.5版有一个“全部更新”按钮,如果不是针对此错误的话,那会很棒。
爱德华·布雷

2
我已经看到jquery1nuget上现在有一个程序包,它只跟踪1.x分支。
克里斯J

1
仅控制台更新,而不是UI更新对我有效(添加allowedVersions之后)。尝试更新时,UI不允许选择任何项目
RockResolve 2014年

19

如何指定版本?

PM>安装包jQuery-版本1.9.1

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


我问了相关的问题:stackoverflow.com/q/16126338/11912简而言之,它可以工作,但是很笨拙。盲目更新会破坏它。
James Skemp

实际上,在jQuery版本化之后,我实际上已经开始使用控制台方式了(我称其为)。不是最佳解决方案,但+1。
James Skemp

+1是因为如果您已经错误地升级到2.x并想返回到1.9并阻止升级到2.x,则需要在批准的答案中添加限制之前/之后像这样手动降级。
Pluc 2014年

8

Nuget现在有一个只跟踪1.x分支的jquery1包,因此您应该可以换出这个的核心jQuery包。


好发现。虽然页面需要做一些工作才能提高可读性,但我喜欢它的灵活性,它允许使用多个版本的jQuery。
James Skemp 2013年

尽管这使我们回到约翰对这个问题的评论;如果有一个同时包含1.x和2.x以及当前版本的软件包,那就太好了。
James Skemp 2013年

2
但是,如果您有其他具有jQuery依赖关系的库,它将永远存在,最好的情况是您可以将它与jQuery 2.0一起使用。如果您只希望使用依赖的jQuery 1.x,那么它将无法正常工作,您必须查看Dave R的答案
RockResolve

4

我将@TeYoU的两种解决方案结合在一起

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

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

PM> Install-Package jQuery -Version 1.9.1

然后我像@Dave R一样编辑了packages.config:

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

然后,我使用Nuget Manager更新到当前版本,当前为1.10.2,它的工作原理很吸引人。


1
您实际上不需要在我找到的第一个版本上指定版本。如果添加允许版本,然后运行更新,它将降级您的
Martin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.