Ich habe eine Lösung, die derzeit auf .NET 4.0 in VS2010 abzielt, auf VS2012 migriert und möchte sie jetzt erneut auf .NET 4.5 ausrichten
Was ich nicht sicher bin, sind die NuGet-Pakete. Zum Beispiel stellt sich heraus, dass EF5, das ich in VS2010 von EF4 aktualisiert habe, tatsächlich EF 4.4 ist, wie Sie hier sehen können:
<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>
Ich kann auch Folgendes in packages.config für das Projekt sehen:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="EntityFramework" version="5.0.0" targetFramework="net40" />
</packages>
Meine Frage lautet also:
Was ist die beste Vorgehensweise, um alle NuGet-Pakete, die derzeit auf .NET 4.0 ausgerichtet sind, auf .NET 4.5 neu auszurichten?
.net
nuget
visual-studio-2012
.net-4.5
Ivan Zlatev
quelle
quelle
Antworten:
NuGet 2.1 bietet eine Funktion, die dies erheblich vereinfacht: Einfach über
update-package -reinstall -ignoreDependencies
die Package Manager-Konsole.NuGet 2.0 kann Ihre Anwendungen nicht sehr gut neu ausrichten. Um die Ziel-Frameworks Ihrer Pakete zu ändern, müssen Sie die Pakete deinstallieren und neu installieren (beachten Sie die von Ihnen installierten Pakete, damit Sie sie jeweils neu installieren können).
Der Grund, warum Pakete deinstalliert und neu installiert werden müssen, ist:
quelle
update-package -reinstall
in Package Manager Console ausgeführt. Alle Pakete wurden deinstalliert und aktualisiert und plötzlich wurde Windows 8 neu gestartet. Als es zurückkam, wurde angezeigt: "Ihr PC hat ein Problem und wurde neu gestartet. Möchten Sie Informationen an Microsoft senden?" :( Scaring ... Übrigens, dies ist die NuGet-Version, die ich gerade installiert habe: Hier wurde2.2.40116.9051
ein Problem eröffnet: nuget.codeplex.com/workitem/3049Wenn Sie Probleme mit dem
update-package -reinstall <packagename>
Befehl hatten, sollten Sie ihn-ignoreDependencies
wie folgt mit flag ausführen:Dieses Flag lässt Ihre Paketabhängigkeiten in Ruhe, andernfalls werden sie möglicherweise aktualisiert, selbst wenn das ursprünglich neu installierte Paket seine Version weiterhin beibehält.
Mehr Infos hier .
quelle
get-package | % { update-package $_.Id -reinstall -ProjectName $_.ProjectName -ignoreDependencies }
Nachdem ich die akzeptierte Antwort erfolglos ausprobiert habe, möchte ich einen weniger riskanten Befehl vorschlagen:
Für weitere Informationen: http://blog.nuget.org/20121231/a-quick-tutorial-on-update-package-command.html
quelle
-reinstall
wird nur die gleiche Version installiert, sehen Sie also keinen Nutzen bei der Verwendung-safe
. Vermisse ich etwasBeim Versuch, die paketlösungsweit neu zu installieren, ist ein Abhängigkeitsfehler aufgetreten (trotz Verwendung des
-ignoreDependencies
Flags), und alle Dateien packages.config für jedes Projekt wurden gelöscht. In VS2013 scheint packages.config erst dann auf die Festplatte zurückgespült und neu hinzugefügt zu werden, wenn alle aktualisierten Abhängigkeiten / Referenzen wieder an das Projekt angehängt wurden.In meinem Fall funktionierte es, jedes Projekt
-ProjectName
einzeln zu aktualisieren , indem dem Befehl der Projektname hinzugefügt wurdeupdate-package
. In diesem Fall wird die packages.config aktualisiert, wenn jedes Projekt aktualisiert wird.Für sehr große Lösungen mag dies nicht praktikabel sein, aber es scheint ein vernünftiger Kompromiss zu sein, das automatisierte Upgrade für so viele Projekte wie möglich zu nutzen und die problematischen zu isolieren, ohne dass jede package.config in Ihrer Lösung bei einem Fehler gelöscht wird.
quelle
UpdatePackage -Reinstall
löschte die package.config- und Projektreferenzen für einige Projekte (insbesondere solche, in denen gefälschte Assemblys generiert wurden). Wir haben dies umgangen, indem wir alle Änderungen am vermasselten Projekt rückgängig gemacht und ausgeführt haben:Update-Package -reinstall -ProjectName "PROJECTNAME" -IgnoreDependencies
Wenn Sie in Visual Studio für Mac 2019 mit der rechten Maustaste auf den Ordner "Pakete" klicken, wird im Menü die Option "Retarget" angezeigt. Dadurch wurde das Retarget-Problem für alle Pakete im Projekt behoben, für die ein Retargeting erforderlich war. Anscheinend gab es in Visual Studio für Mac (zumindest in meinem) im Menü Extras keinen NuGet Package Manager, sodass ich die Package Manager-Konsole nicht starten konnte.
quelle