如何告诉NuGet,你想要使用特定主版本的包的最新版本,并且永远不要超过这个主版本呢?
例如,以jQuery为例:如果需要支持旧版浏览器,则不能使用2.x版本。我们只能使用最新的1.x版本。
我们知道,当前可用的(并默认在“管理NuGet程序包”对话框中提供的)jQuery版本是2.1.1。与其使用此版本,我们需要使用jQuery 1.x分支的最新主版本,即1.11.1。
我知道如何最初安装1.11.1版。一个简单的解决方案是手动编辑packages.config文件,将version属性的值替换为1.11.1:
<packages>
<package id="jQuery" version="1.11.1" targetFramework="net451" />
</packages>
并构建项目。
我不知道的是如何告诉NuGet追踪发布1.x分支的新版本,以便在新的2.x版本发布时采用相同的方式更新到它们:
默认情况下,NuGet始终尝试更新到最新的2.x版本,而不是最新的1.x版本。
换句话说,在使用旧主要版本的软件包时,您需要手动检查发布版本并使NuGet每次安装它们。
我尝试在软件包version
属性中使用星号:
<packages>
<package id="Package1" version="1.*" targetFramework="net40" />
</packages>
但是NuGet抛出了一个异常:
NuGet Package restore failed for project Project1: System.IO.InvalidDataException: Unable to parse version value '1.*' from 'packages.config'.
at NuGet.PackageReferenceFile.<GetPackageReferences>d__0.MoveNext()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at NuGet.VsEvents.PackageRestorer.RestorePackages(String packageReferenceFileFullPath, IFileSystem fileSystem)
at NuGet.VsEvents.PackageRestorer.PackageRestore(ProjectPackageReferenceFile projectPackageReferenceFile).
那么,你如何实现上述目标呢?