Ich habe festgestellt, dass eine App, die auf 4.5 abzielt, eine Assembly mit dem Ziel 4.5.2 laden und ausführen kann - aber ich kann ein solches Setup nicht kompilieren!
Frage : Wie kann ich eine .NET 4.5-App mit einem Verweis auf die .NET 4.5.2-Assembly kompilieren?
Experimentdetails:
Das Kompilieren in Visual Studio oder MSBuild schlägt mit
fehlwarning MSB3274: Der primäre Verweis "(...) \ MyLib.dll" konnte nicht aufgelöst werden, da er auf dem Framework ".NETFramework, Version = v4.5.2" aufbaut. Dies ist eine höhere Version als das derzeit ausgerichtete Framework ".NETFramework, Version = v4.5".
Fehler CS0246: Der Typ oder Namespacename 'MyLib' konnte nicht gefunden werden (fehlt eine using-Direktive oder eine Assemblyreferenz?)
Ich habe versucht, MyLib separat zu kompilieren und auf seine DLL zu verweisen, habe aber die gleichen Kompilierungsfehler.
Allerdings gelang es mir, beide zu starten:
Hintergrund: Ich bereite einen Übergang von unserem großen NuGet-verwalteten Multiprojekt von .NET 4.5 auf 4.5.2 vor. Die Ankündigung sagt It is a highly compatible, in-place update to the .NET Framework 4, 4.5 and 4.5.1
, also habe ich versucht, was passieren würde, wenn wir einige unserer (von NuGet verwalteten) Refs auf 4.5.2 upgraden und nicht aktualisierte Projekte versuchen, sie zu verbrauchen.
Sie können versuchen, Ihre Bibliothek zu einer .NET Standard
-Bibliothek zu machen anstatt zu .NET Framework 4.X
one.
Siehe den verwandten Thread .
Für rückwärtskompatibel können Sie Multi-Targeting verwenden. Öffnen Sie Ihre .csproj-Datei und ändern Sie sie wie folgt:
%Vor%Dies ist ein Beispiel für das Paket .nuget für zwei Frameworks: net462 und netstandard1.6
Beim Erstellen werden zwei Ordner mit Bibliotheken erstellt:
Tags und Links .net .net-4.5.2