ich möchte eine Klassenbibliothek, die mit netcor2.0 kompiliert ist, unter .Net 4.6.1 verwenden. Visual Studio meldet mir dann aber nur "Für das Projekt "Contracts.csproj" ist die Zielversion netcoreapp2.0 festgelegt. Eine Referenzierung durch ein Projekt mit der Zielversion .NETFramework,Version=v4.6.1 ist nicht möglich."
Was mache ich falsch? Egal, ob ich das .Net 4.6.1-Projekt auf einen höheren oder niedrigeren .Net-Stand bringe oder das netcore-Projekt auf 1.0 oder 1.1 stelle - ich bekomme immer diese Meldung. Ich dachte, netcore2.0 und .Net4.6.1 sind technisch identisch?
.NET Core Bibliotheken können nicht in .NET-Framework Projekten verwendet werden. .NET Core wurde von Microsoft komplett neu unter dem Gesichtspunkt der Plattformunabhängigkeit entwickelt und ist nicht kompatibel mit dem Standard .NET Framework.
Microsoft hat das Problem aber erkannt und deshalb den .NET Standard aus der Taufe gehoben. Dieser definiert einen Satz an Standard-API's, die von allen .NET-Versionen unterstützt wird. Wenn du der Beschreibung im Link folgst, siehst du, dass du dem .NET Standard 2.0 folgen musst, wenn du .NET Core 2.0 mit .NET Framework 4.6.1 verheiraten willst.
Das folgende gilt für Visual Studio 2017. Wenn du die Klassenbibliothek selbst erstellt hast, kannst du den Projekt-Typ auf .NET Standard 2.0 umstellen. Dazu musst du die Projektdatei (.csproj) editieren und folgenden Eintrag ändern: