2016-03-15 10 views
36

Mam rozwiązanie .net z około 30 projektów, wszystkie z nich targetowanie .Net Framework 4.5. i każde odwołanie co najmniej 3-4 pakietów NuGet.Nuget ponownie ukierunkowane po aktualizacji z .Net Framework 4.5 do 4.6.1

Teraz musimy zaktualizować je do .Net Framework 4.6.1. Oto, co muszę wiedzieć:

  1. Czy muszę ponownie kierować pakiety NuGet, czy mogę je pominąć, ponieważ będzie to aktualizacja "na miejscu"?
  2. Jeśli tak, czy mogę zaktualizować plik packages.config dla każdego projektu, zastępując parametr targetFramework = "net45" przez targetFramework = "net461" dla każdego pakietu NuGet? Widziałem kilka wątków zalecających odinstalowanie, a następnie przeinstalowanie pakietu za pomocą polecenia "update-package". Próbowałem tego dzisiaj, ale skończyło się na kilku błędach.
+1

Modyfikowanie targetFramework w pliku packages.config nie ma wpływu na zespołach, które są wymienione w projekcie, zakładając, że jesteś nie używać .xproj, więc nie byłoby to właściwą zmianą. Sądzę, że nie wiele pakietów NuGet ma złoenia, które wyraźnie celują w .NET 4.6, więc podejrzewam, że nic nie będzie musiało zostać retargetowane. Powinieneś być w stanie przejrzeć katalogi lib twoich pakietów NuGet, aby zobaczyć, na co celują. –

+0

Więc skończyłem modernizację 75% moich pakietów NuGet do ich najnowszych wersji. Po aktualizacji, atrybut targetFramework został automatycznie ustawiony na "net461" dla większości pakietów. Jest kilka pakietów, które będę aktualizować później i wydają się działać dobrze po aktualizacji. Dzięki. – Vishal

+0

uaktualnienie z wersji 4.5. * Do 4. * będzie działać zgodnie z projektem: https://msdn.microsoft.com/en-us/library/ff602939% 28v = vs.110% 29.aspx – OzBob

Odpowiedz

57

Pakiety nie zostaną automatycznie retargetowane, ale istnieje za to automatyczna poprawka.

w opakowaniu konsoli Menedżer wystarczy uruchomić:

Update-Package -Reinstall 

To zmusi menedżera pakietów przeinstalować każdy pakiet w każdym projekcie (bez zmiany wersji odwołuje pakietu).

Po ponownym zainstalowaniu pakietów po ukierunkowaniu nowej struktury zmienia to wszystkie odniesienia do poprawnej wersji.

Można również uruchomić to na jednym projekcie z:

Update-Package -Reinstall -ProjectName Project.Name.Here 

Użyłem tej techniki wiele razy, aby rozwiązać problemy Nuget referencyjnych.

+9

Jeden komentarz, aby zrobić to trochę szybciej. Dodaj -IgnoreDependencies: 'Update-Package -Reinstall -IgnoreDependencies' – kenhundley

11

1 Znajdź wszystkie pliki .csproj i zastąpić

<TargetFrameworkVersion>v4.5.1</TargetFrameworkVersion> 

z

<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> 

2 Otwórz konsoli Package Manager i uruchomić

Update-Package -Reinstall -IgnoreDependencies 

4 Znajdź wszystkie rozwiązania następnie msbuild każdy.

+0

Krok # 3 powinien również automatycznie obsłużyć krok # 2 dla _packages.config_. –

+0

@RayVega proszę wyjaśnić nieco więcej. Czy mógłbyś edytować i pokazać, jak? – OzBob

+1

Jeśli pominę krok 2, ale zamiast tego krok nr 3 zaraz po kroku 1, wszystkie atrybuty _packages.config_ "atrybuty targetFramework" automatycznie "zostaną zmodyfikowane, aby pasowały do ​​nowego' TargetFramework' csproj'. Przynajmniej tak to działało dla mnie przy użyciu nuget.exe w wersji 4.3.0.440 i aktualizacji z wersji 4.5 -> 4.7. Zasadniczo zaoszczędziło to trochę pracy, ponieważ nie trzeba ręcznie edytować tych plików pakietów dla każdego projektu. –

0

Poprawiono za pomocą -

Update Package Ponownie instaluje

enter image description here

Powiązane problemy