È possibile dire a NuGet che si desidera utilizzare l'ultima versione del pacchetto con la versione principale particolare e mai al di sopra di questa versione principale?NuGet Limit max versione principale di un pacchetto
Ad esempio, prendiamo l'esempio con jQuery: non possiamo usare la versione 2.x se abbiamo bisogno del supporto dei vecchi browser. Siamo limitati a utilizzare la versione 1.x più recente.
Sappiamo che la versione attualmente disponibile (e offerta di default nella finestra di dialogo Gestisci pacchetti Nuget) di jQuery è 2.1.1. Anziché utilizzare questa versione, è necessario utilizzare la versione principale attualmente più recente del ramo jQuery 1.x, attualmente 1.11.1.
So come installare inizialmente la versione 1.11.1. Una soluzione semplice è quella di modificare manualmente il file packages.config per sostituire il valore dell'attributo version
con 1.11.1
:
<packages>
<package id="jQuery" version="1.11.1" targetFramework="net451" />
</packages>
e generare il progetto.
Quello che non so è come dire a NuGet di tenere traccia del rilascio di nuove versioni del ramo 1.x per offrirmi l'aggiornamento a loro nello stesso modo in cui lo farebbe quando una nuova versione 2.x è liberare:
per impostazione predefinita, NuGet sarà sempre cercare di aggiornare all'ultima versione 2.x, non l'ultima 1.x.
In altre parole, quando si utilizzano pacchetti con vecchie versioni principali, è necessario controllare manualmente le versioni e fare in modo che NuGet le installi ogni volta.
Ho cercato di utilizzare un asterisco nel pacchetto version
attributo:
<packages>
<package id="Package1" version="1.*" targetFramework="net40" />
</packages>
Ma NuGet genera un'eccezione:
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).
Quindi, come si fa a raggiungere l'obiettivo di cui sopra?