2014-09-19 15 views
7

Czy można powiedzieć NuGet, że chcesz używać najnowszej wersji pakietu ze szczególną wersją główną i nigdy powyżej tej wersji głównej?NuGet Limit max wersja główna pakietu

Na przykład, weźmy przykład z jQuery: nie możemy użyć wersji 2.x, jeśli potrzebujemy wsparcia ze starych przeglądarek. Jesteśmy ograniczeni do korzystania z najnowszej wersji 1.x.

Wiemy, że aktualnie dostępna (i domyślnie oferowana w oknie dialogowymdialog) Zarządzanie juguery to 2.1.1. Zamiast używać tej wersji, musimy użyć najnowszej głównej wersji oddziału jQuery 1.x, obecnie 1.11.1.

Wiem, jak wstępnie zainstalować wersję 1.11.1. Jednym prostym rozwiązaniem jest ręcznie edytować plik packages.config zastąpić wartość atrybutu version z 1.11.1:

<packages> 
    <package id="jQuery" version="1.11.1" targetFramework="net451" /> 
</packages> 

i budowania projektu.

Nie wiem, jak przekazać NuGetowi, aby śledził wydawanie nowych wersji oddziału 1.x, aby zaoferować mi aktualizację w taki sam sposób, jak w przypadku nowej wersji 2.x Release:

How NuGet Add-In notifies of a new version of a package

domyślnie Nuget zawsze będzie dążył do aktualizacji do najnowszej wersji 2.x, nie ostatni 1.x

Innymi słowy, podczas korzystania z pakietów ze starszymi wersjami głównymi, należy ręcznie sprawdzać wydania i instalować je za każdym razem przy użyciu NuGeta.

Próbowałem użyć gwiazdki w pakiecie version atrybut:

<packages> 
    <package id="Package1" version="1.*" targetFramework="net40" /> 
</packages> 

Ale Nuget zgłasza wyjątek:

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). 

Tak, jak można osiągnąć powyższy cel?

Odpowiedz

13

Znalazłem rozwiązanie. Musisz użyć NuGet version constraint.

Kontynuując przykład jQuery, jeśli trzeba zaktualizować jQuery do najnowszej wersji 1.x oddziału, ale nie do 2.x, należy dodać następujące ograniczenia do packages.config:

<packages> 
    <package id="jQuery" version="1.11.0" allowedVersions="[1,2)" targetFramework="net451" /> 
</packages> 

ten pozwala być powiadamiany o nowościach z branży 1.x tylko i nigdy nie być oferowane do aktualizacji nieprawidłowej wersji 2.x dla Ciebie:

enter image description here

Powiązane problemy