2017-11-16 20 views
2

In Visual Studio 2017 habe ich eine solcution mit folgendem Inhalt:Net Core-App 2.0 nicht kompatibel mit .NET Standard 2.0 Bibliotheken

  • ASP.Net Kern Webanwendungsprojekts (ASP.Net MVC)
  • zwei Klassenbibliothek Projekte als .Net Standardbibliotheken aus der Box
  • erstellt

standardmäßig VS 2017 diese Klassenbibliotheken Ziel Net Standard 1.1 2.0 und die Web-Anwendung Ziele .Net-Core macht.

Projektabhängigkeiten hinzugefügt - Die Web-App verfügt über beide Klassenbibliotheken als Projektabhängigkeiten (da sie die Kernfunktionalität enthalten, wobei die Web-App lediglich das Frontend ist).

Theoretisch sollte VS vernünftige Standardwerte gewählt haben. Das kompiliert jedoch nicht. Ich bekomme Fehler wie folgt aus:

Error CS1705 
Assembly 'Entities' with identity 'Entities, Version=1.0.0.0, 
Culture=neutral, PublicKeyToken=null' uses 'System.Runtime, Version=4.1.2.0, 
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' which has a higher version 
than referenced assembly 'System.Runtime' with identity 'System.Runtime, 
Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 

Ich weiß nicht, wie Verweise auf System.Runtime, ändern und keine andere Wahl in VS finden, dies zu tun.

Ok - .Net-Core 1.1 sollte wirklich keinen Sinn, mit .Net-Standard 2.0 (auch wenn .Net-Core 1.1 ist nicht einmal in der offiziellen Net Standard-Übersichtsgrafik finden official MS Github documentation aufgelistet machen, so dass ich, wie wir können, sicher sein?).

Lassen Sie uns das ändern und das Ziel der Web-App zu .Net Core 2.0, so dass alles Ziele 2,0 - nach dem oben genannten offiziellen Diagramm, die gut passen sollte - so in VS mit Projekten> Eigenschaften ändern wir das Ziel Framework zu .Net Core 2.0 und Neuerstellung der Lösung. (Beachten Sie, dass meine VS-Instanz so eingestellt ist, dass sie Nuget-Pakete bei jeder Neuerstellung standardmäßig wiederherstellt.)

Wieder funktioniert das nicht. Verschiedene Fehler diesmal - mehrere Fehler dieser Art hier:

Error NU1605 Detected package downgrade: System.Net.Primitives from 4.3.0 
    to 4.0.11. Reference the package directly from the project to select a 
different version. 
    UI.Web (>= 1.0.0) -> Microsoft.VisualStudio.Web.BrowserLink (>= 1.1.2) -> 
    Microsoft.AspNetCore.Hosting.Abstractions (>= 1.1.2) -> NETStandard.Library 
    (>= 1.6.1) -> System.Net.Primitives (>= 4.3.0) 
    UI.Web (>= 1.0.0) -> Microsoft.VisualStudio.Web.BrowserLink (>= 1.1.2) -> 
    System.Net.Primitives (>= 4.0.11) UI.Web C:\Source\Projects\Test 
    \UI.Web\UI.Web.csproj 

In früheren Versionen von .NET Core-Tooling (VS 2015) es ermöglicht viele JSON-Dateien waren für Zwicken der Abhängigkeit Versionen aber diese nicht mehr gilt VS 2017 - csproj ist das einzige und es ist in XML und enthält keinen Verweis auf eines der oben aufgeführten Pakete in dem Fehler.

Was bedeutet das? .Net Core 2.0 ist nicht kompatibel mit .Net Standard 2.0-Bibliotheken?

Lustig ist, es ist nicht das erste Mal, dass ich diese Art von App produziert habe und vor ein paar Monaten, es funktionierte direkt aus der Box. Blick in eine ältere App, die funktioniert gut finde ich, dass

  • die .NET-Standardbibliotheken sind auf .NET Standard-1.6
  • ASP.Net Core-Web-App ist auf .Net-Core 1,1

Changed das in meinem neuen Projekt - und voila, es funktioniert.

Aber dies wirft noch folgende Fragen:

  1. Ist Net Core 2.0 mit .NET-Standard 2.0 Bibliotheken nicht kompatibel ist?
  2. Ist das ein Problem in VS 2017, dass die Standard-Frameworks für .Net Core und .Net Standard-Bibliotheken nicht schwalben, oder ist das etwas kann ich einrichten/konfigurieren?
+0

Jede meiner .NET Core und .NET Standard-Anwendungen wurde entweder auf Ubuntu oder MacOS gebaut, unter Verwendung der CLI-Tools und ich hatte dieses Problem nicht (ich habe jede der Builds aus der ersten öffentlichen Vorschau verwendet zum RTM von 2.0.0). Vielleicht ist es ein Problem mit VS 2017. Core 2.0 ist vollständig konform mit Standard 2.0, also glaube ich nicht, dass es das ist. Welche Version von VS 2017 verwendest du? –

+0

Ich benutze VS 2017 Community, Version 15.3.0. Erstellt ein paar Test-Projekte, nur um dieses Problem zu testen, passiert es jedes Mal. – nepdev

+0

Hmm ... Das ist ziemlich seltsam. Ich könnte versuchen, eine von Azure gehostete VM hochzufahren und zu versuchen, sie neu zu erstellen. In der Zwischenzeit frage ich mich, ob es sich lohnt, zu versuchen, Ihre VS-Instanz zu aktualisieren. Gehen Sie zu "Programme hinzufügen und entfernen" in der Systemsteuerung, suchen Sie "VS" und wählen Sie "Ändern", lassen Sie das Installationsprogramm aktualisieren und aktualisieren Sie dann Ihre Installation. –

Antwort

0

Um das Offensichtliche zu sagen, ist .NET Core 2.0 .NET Standard 2.0 kompatibel.

Sie können jedoch Fehler-/Warnmeldungen wie NU1605 Detected package downgrade sehen. Dies passiert auch, wenn Sie zum Beispiel auf log4net 2.0.8 referenzieren.

NU1605 in der Tat ist eine Warnung, aber 2017.

in Visual Studio als Fehler standardmäßig behandeln es können Sie diese zurück, indem Sie die csproj-Datei (wie <WarningsAsErrors>NU1605</WarningsAsErrors> Suche nach etwas) zu einer Warnung ändern oder Wechseln Sie in Visual Studio zu den Projekteigenschaften> Erstellen> Warnungen als Fehler behandeln.