Wie kann ich eine .NET 4.5-App mit einem Verweis auf die .NET 4.5.2-Assembly kompilieren?

9

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:

  • MyLib.csproj - Ziele 4.5.2
  • MyApp.csproj - Targets 4.5, enthält eine Projektreferenz für MyLib.csproj

Das Kompilieren in Visual Studio oder MSBuild schlägt mit

fehl
  

warning 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:

  • Setzen Sie beide Projekte auf 4.5, kompilieren Sie das Ergebnis in c: \ test \ MyApp.exe
  • Setzen Sie beide Projekte auf 4.5.2, kompilieren Sie das Ergebnis in c: \ test \ MyLib.dll
  • Run MyApp.exe - läuft ok!

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.

    
Jonathan 05.02.2015, 16:35
quelle

2 Antworten

0

Sie können versuchen, Ihre Bibliothek zu einer .NET Standard -Bibliothek zu machen anstatt zu .NET Framework 4.X one.

Siehe den verwandten Thread .

    
Dmitry Pavlov 25.08.2017 11:08
quelle
0

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:

  • net462
  • netstandard1.6
Timur Lemeshko 25.08.2017 12:00
quelle

Tags und Links