2017-03-06 4 views
0

Ich fand viele Beiträge über den Verweis auf ein .NET Core Projekt von 4.6.1, aber ich bekomme einen Fehler einfach Referenzieren a .NET Core 1.1 DLL direkt von einer 4.6.1 Winforms App. Merkwürdigerweise stellt es in Ordnung, aber bekommt diesen Laufzeitfehler:Wie man eine .NET Core 1.1 DLL referenziert - kein Projekt - Von .NET 4.6.1

"konnte nicht Datei oder Assembly‚laden System.Runtime, Version = 4.1.0.0 ...."

Die 4.6.1 App läuft gut, bis Es ruft die Klasse ab, die die referenzierte Assembly verwendet, und löst dann diesen Fehler aus (es wird nicht einmal der Konstruktor dieser Klasse ausgeführt).

Meine Hauptanforderung ist, dass die .NET Core DLL plattformübergreifend sein muss - es muss in Ubuntu ausgeführt werden.

Die project.json Kern DLL in seiner Gesamtheit:

{ "version": "1.0.0-*",

"dependencies": { "Microsoft.NETCore.App": { "type": "platform", "version": "1.1.0" },

"frameworks": { "netcoreapp1.1": { } } }

Ich bin nicht sicher, warum dies geschieht - der Kern DLL etwas anderes als Kern nicht referenziert - warum es meine 4.6.1 machen App starten Sie nach System.Runtime suchen? Das ist eine Rahmenversammlung. Und wenn es etwas mit der Konfiguration der Core-DLL zu tun hat, warum sollte es nicht ein Kompilierungsfehler sein?

Jede Hilfe wird sehr geschätzt.

  • Buzz
+0

.NET Core? Nicht möglich. .NET Standard, ja. Bitte lerne die Unterschiede, bevor du weiterziehst. –

Antwort

2

Wenn Sie eine Bibliothek wollen sowohl in .NET Framework 4.6.1 und auf Ubuntu mit .NET-Core in der Lage sein zu laufen, dann sollte die Bibliothek netstandard1.4 sein Targeting oder niedriger. Weitere Informationen finden Sie unter .NET Standard documentation.

.NET Standard ist die neue "portable Klassenbibliothek", mit der Ihre Bibliotheken unter .NET Framework, .NET Core, Mono, UWP usw. ausgeführt werden können - an allen Stellen, an denen .NET-Code ausgeführt werden kann.

+0

Danke Eric. Sie sagen "1,4 oder niedriger ...". Ich nehme an, das ist die neueste Version, die Linux .NET Core unterstützt, ist das richtig? Wohin würde ich gehen, um mit den unterstützten Versionen für Linux Schritt zu halten? – buzzripper

+1

Ich sage "netstandard1.4 oder niedriger", weil Sie auf .NET Framework 4.6.1 abzielen möchten. Sehen Sie sich das Diagramm auf dieser Webseite an: https://docs.microsoft.com/en-us/dotnet/articles/standard/library, das zeigt, dass .NET Framework 4.6.1 Bibliotheken ausführen kann, die auf netstandard1.4 oder niedriger abzielen. Unter Linux ist .NET Core die Plattform, auf der Sie ausgeführt werden, und unterstützt derzeit netstandard1.0 - 1.6. Mit 2.0 kommt bald. –

Verwandte Themen