Konvertieren Sie .NET Core 2.0-Klassenbibliotheken in .NET Standard


69

Gibt es eine Möglichkeit, eine Klassenbibliothek für .NET Core 2.0 einfach in .NET Standard zu konvertieren?

Wenn ich es richtig verstehe und die Wiederverwendbarkeit von Klassenbibliotheken in Projekten maximieren möchte, die auf verschiedene .NET Frameworks abzielen, z. B. .NET Framework, .NET Core, Xamarin usw., ist es eine bessere Idee, auf .NET Standard abzuzielen - vorausgesetzt, Alle erforderlichen APIs sind in der Version von .NET Standard verfügbar, auf die abgezielt wird.

Aus diesem Grund möchte ich meine Klassenbibliotheken von .NET Core 2.0 nach .NET Standard 1.6 oder .NET Standard 2.0 konvertieren.

Antworten:


79

In der Projektdatei können Sie auf die Zielkompilierung netstandardmit der genauen Version verweisen .

Beispiel für Proj.csproj:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard1.6</TargetFramework>
  </PropertyGroup>
</Project>
...

Microsoft bietet eine gute Dokumentation zu Targeting-Typen.

Dotnet Norm ist kein Rahmen oder eine Bibliothek, ist es ein abstrakter Satz von Anweisungen: Welche Funktionen haben sollten System.Array, String, List, und so weiter. Derzeit gibt es verschiedene Implementierungen: .NET Framework, .NET Core, Mono, Xamarin, Windows Phone. Dies bedeutet, dass verschiedene Implementierungen Ihr Bibliotheks-Targeting neu kompilieren und wiederverwenden können netstandard. Es ist eine sehr gute Wahl für ein NuGet-Paket.

Sie können mit den Versionen spielen und den für Ihre Bibliothek erforderlichen Mindestfunktionssatz finden. Jeder Dotnet Standard erweitert die Funktionalität der vorherigen Version. Je weniger die Zielversion ausgewählt ist, desto mehr Plattformen wird Ihre Bibliothek unterstützen.


Obwohl .Net Standard kein Framework ist, legen Sie es dennoch im <TargetFramework> -Tag Ihrer project.csproj-Datei oder im Dropdown-Feld Eigenschaften -> "Ziel-Framework" des Projekts fest. Sachen zu benennen ist schwer!
Scuzzlebutt

53

Sie können die csproj-Datei bearbeiten (in VS durch Klicken mit der rechten Maustaste auf die Projektdatei) und ändern

<TargetFramework>netcoreapp2.0</TargetFramework>

zu

<TargetFramework>netstandard2.0</TargetFramework>

Paket Microsoft.AspNetCore.All 2.0.0 unterstützt: netcoreapp2.0 (.NETCoreApp, Version = v2.0)
lohiarahul

Und nachdem ich die
Paketreferenz entfernt habe

Nun, es hat funktioniert, aber es hat viel mehr Probleme verursacht, die schlimmer waren als die ursprüngliche Warnung: D. Übrigens glaube ich, dass meine .net-Kern-App 2.1 statt 2.0 war, dh "<TargetFramework> netcoreapp2.1 </ TargetFramework>".
Zeek2

1
Es funktioniert bei der Konvertierung von .net Standard zu .net Core
Tristan Djahel

Ich habe dies getan und nach dieser Änderung ist das "Target Framework" in "Properies" leer. Führt dies zu negativen Übereinstimmungen?
K.Oleksiak

1
  1. Gehen Sie zum Projektordner
  2. Öffnen Sie die .csproj-Datei
  3. Ersetzen Sie Ihren Zielrahmen

    netcoreapp2.2 TO netstandard2.0

Sehen Sie dieses Bild klarer

Geben Sie hier die Bildbeschreibung ein

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.