Przeprowadziłem migrację rozwiązania, które obecnie jest ukierunkowane na .NET 4.0 w VS2010 na VS2012, a teraz chciałbym ponownie skierować go na .Net 4.5
Nie jestem pewien co do pakietów NuGet. Na przykład EF5, który zaktualizowałem z EF4 w VS2010, okazuje się faktycznie EF 4.4, jak widać tutaj:
<Reference Include="EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\EntityFramework.5.0.0\lib\net40\EntityFramework.dll</HintPath>
</Reference>
Widzę również następujące elementy w pliku package.config dla projektu:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="EntityFramework" version="5.0.0" targetFramework="net40" />
</packages>
Więc moje pytanie brzmi:
Jaka jest najlepsza praktyka, aby ponownie skierować wszystkie pakiety NuGet, które są obecnie ustawione na .NET 4.0 na .NET 4.5?
.net
nuget
visual-studio-2012
.net-4.5
Ivan Zlatev
źródło
źródło
Odpowiedzi:
NuGet 2.1 oferuje funkcję, która sprawia, że jest to o wiele prostsze: wystarczy
update-package -reinstall -ignoreDependencies
z poziomu konsoli Menedżera pakietów.NuGet 2.0 nie radzi sobie zbyt dobrze z ukierunkowaniem aplikacji. Aby zmienić docelowe struktury pakietów, musisz odinstalować i ponownie zainstalować pakiety (zwracając uwagę na zainstalowane pakiety, aby móc ponownie zainstalować każdy z nich).
Powodem, dla którego pakiety muszą zostać odinstalowane i ponownie zainstalowane, są:
źródło
update-package -reinstall
w konsoli Menedżera pakietów. Wszystkie pakiety zaczęły być odinstalowywane i aktualizowane, a nagle system Windows 8 uruchomił się ponownie, a gdy wrócił, powiedział: „Wystąpił problem z komputerem i uruchomiono go ponownie. Czy chcesz wysłać informacje do firmy Microsoft?” :( Przerażenie ... Nawiasem mówiąc, to jest wersja NuGet, którą właśnie zainstalowałem:2.2.40116.9051
Otworzyłem problem tutaj: nuget.codeplex.com/workitem/3049Dla tych, którzy mieli problemy z
update-package -reinstall <packagename>
poleceniem, rozważ uruchomienie go z-ignoreDependencies
flagą:Ta flaga pozostawi twoje zależności pakietu w spokoju, w przeciwnym razie mogą zostać zaktualizowane, nawet jeśli pakiet, którego pierwotnie chciałeś ponownie zainstalować, nadal zachowuje swoją wersję.
Więcej informacji tutaj .
źródło
get-package | % { update-package $_.Id -reinstall -ProjectName $_.ProjectName -ignoreDependencies }
Po bezskutecznym wypróbowaniu zaakceptowanej odpowiedzi chciałbym zasugerować mniej ryzykowne polecenie:
Aby uzyskać więcej informacji: http://blog.nuget.org/20121231/a-quick-tutorial-on-update-package-command.html
źródło
-reinstall
zainstaluje tylko tę samą wersję, więc nie widzę żadnych korzyści z używania-safe
. Czy coś brakuje?Podczas próby ponownej instalacji pakietów w całym rozwiązaniu napotkałem błąd zależności (pomimo użycia
-ignoreDependencies
flagi) i wszystkie pliki packages.config dla każdego projektu zostały usunięte. W VS2013 wygląda na to, że packages.config nie dostać zaczerwienioną na dysk i ponownie dodany aż wszystkie zmodernizowane Zależności / referencje są ponownie przypisane do projektu.W moim przypadku zadziałało uaktualnienie każdego projektu pojedynczo przez dodanie nazwy
-ProjectName
projektu doupdate-package
polecenia. W tym przypadku pakiety.config jest aktualizowany podczas każdego projektu.Może nie być praktyczny w przypadku bardzo dużych rozwiązań, ale rozsądnym kompromisem wydaje się nadal korzystanie z automatycznej aktualizacji dla jak największej liczby projektów i izolowanie problematycznych bez usuwania wszystkich pakietów package.config w rozwiązaniu po awarii.
źródło
UpdatePackage -Reinstall
usunął plik package.config i odwołania do projektów dla kilku projektów (w szczególności tych, w których wygenerowano fałszywe zespoły). Obejrzeliśmy to, cofając wszystkie zmiany w spieprzonym projekcie i uruchamiając:Update-Package -reinstall -ProjectName "PROJECTNAME" -IgnoreDependencies
W programie Visual Studio dla komputerów Mac 2019 kliknięcie prawym przyciskiem myszy folderu Pakiety pokazuje w menu opcję „Retarget”. Rozwiązało to problem z retargetowaniem wszystkich pakietów w projekcie, które wymagały retargetowania. Wygląda na to, że nie było Menedżera pakietów NuGet w menu Narzędzia w Visual Studio dla komputerów Mac (przynajmniej mój), więc nie mogłem uruchomić konsoli Menedżera pakietów.
źródło