2016-08-08 80 views
6

Ich verwende VS Update 3 (14.0.25425.01). Hier ist, was ich getan habe:Verweis auf .NET 4.6.2-Klassenbibliothek von .NET Core-App

  1. erstellen ASP.Net Core-Web-Anwendung (.NET Core)
  2. erstellen Klassenbibliothek .Net 4.6.2
  3. hinzufügen net462 zu Frameworks, netcoreapp1.0 Einfuhren in Projekt. json
  4. Rechtsklick auf ASP.Net Core-App, klicken Sie auf Verweis hinzufügen, wählen Sie Projekte, wählen Sie Klassenbibliothek Sie in Schritt 2.

ich bekomme keine Fehler auf die Wiederherstellung und das wird auf die ASP hinzugefügt. Netto C Erz App. Ich kann jedoch nicht darauf zugreifen. Ich kann keine verwendende Importdeklaration hinzufügen oder auf die Objekte zugreifen. Ich habe viele Dinge durchgelaufen, aber nichts scheint zu funktionieren und die Posts sind sehr fragmentiert.

enter image description here

Hier ist die Program.cs in dem ASP.Net Core-App. enter image description here

enter image description here

aktualisieren Ich tat, was Nate vorgeschlagen. Ich dachte, dass ich das schon probiert habe ... aber sicher kann ich jetzt auf meine 4.6.2 Bibliotheken zugreifen. Ich erhalte jetzt jedoch Kompilierungsfehler.

enter image description here

Antwort

4

Dies funktioniert in Visual Studio 2015 Update 3, aber Ihr project.json ist nicht ganz richtig.

Statt net462 zum imports Abschnitt des Hinzufügens, sollte es in dem frameworks Abschnitt sein:

"frameworks": { 
    "net461": { }, 
    "netcoreapp1.0": { 
    "dependencies": { 
     "Microsoft.NETCore.App": { 
     "type": "platform", 
     "version": "1.0.0" 
     } 
    } 
    } 
} 

Beachten Sie, dass die Microsoft.NETCore.App Abhängigkeit muss auch in den netcoreapp1.0 Abschnitt verschoben werden. Das liegt daran, dass diese Abhängigkeit nur beim Kompilieren als .NET Core-Anwendung erforderlich ist.

Der Verweis auf Ihre .NET 4.6.2 Bibliothek ist dann einfach ein Teil Ihres dependencies Abschnitts:

"dependencies": { 
    (...) 
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0", 
    "MyLibrary": { 
    "target": "project" 
    } 
} 

Durch es auf diese Weise zu strukturieren, ich war in der Lage und Nutzungsklassen in meinem .NET 4.6 zu verweisen. 2 Bibliothek ohne Probleme.


als Referenz, hier ist die gesamte Arbeits project.json ich verwenden:

{ 
    "dependencies": { 
    "Microsoft.AspNetCore.Mvc": "1.0.0", 
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0", 
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0", 
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0", 
    "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0", 
    "Microsoft.Extensions.Configuration.Json": "1.0.0", 
    "Microsoft.Extensions.Configuration.CommandLine": "1.0.0", 
    "Microsoft.Extensions.Logging": "1.0.0", 
    "Microsoft.Extensions.Logging.Console": "1.0.0", 
    "Microsoft.Extensions.Logging.Debug": "1.0.0", 
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0", 
    "MyLibrary": { 
     "target": "project" 
    } 
    }, 
    "frameworks": { 
    "net461": { }, 
    "netcoreapp1.0": { 
     "dependencies": { 
     "Microsoft.NETCore.App": { 
      "type": "platform", 
      "version": "1.0.0" 
     } 
     } 
    } 
    }, 
    "version": "1.0.0-*" 
} 
+0

Kompiliert das eigentlich für 'netcoreapp1.0' oder nur für' net461'? – svick

+0

@svick Mit Visual Studio und 'dotnet build' werden Binärdateien für' net461' und 'netcoreapp1.0' erzeugt. –

+0

Wie? Eine 'netcoreapp1.0' App sollte sich nicht auf eine' net461' Bibliothek verlassen können, die einfach nicht kompatibel ist. – svick

1

@NateBarbettini Antwort meine ursprüngliche Frage erreicht. Aber ich konnte ASP.Net Core Web Application Version 1 nicht mit meinem .Net 4.6.1-Projekt ausführen, da es keine .NetCore.App v1-Assembly für mein .Net 4.6.1-Projekt gefunden hat. Also habe ich meinem Projekt .Net 4.6.1 mit folgendem Projekt.json eine project.json hinzugefügt.

Als nächstes in der ASP.Net Core Web Application ändern Sie die project.json, indem Sie eine Abhängigkeit unter der .NetCore.App hinzufügen. Auf diese Weise werden beide Versionen, 4.6.1 und .NetCore v1, aufgerufen.

... 
"frameworks": { 
"net461": { 
    "dependencies": { 
    "ClassLibrary1": { 
     "target": "project" 
    } 
    } 
}, 
"netcoreapp1.0": { 
    "imports": [ 
    "dotnet5.6", 
    "portable-net45+win8", 
    "net461" 
    ], 
    "dependencies": { 
    "Microsoft.NETCore.App": { 
     "version": "1.0.0", 
     "type": "platform" 
    }, 
    "ClassLibrary1": { 
     "target": "project" 
    } 
    } 
} 
} 

So weit so gut, ich in .Net 4.6.1 entwickeln kann und es wird funktionieren unter .NetCore.App v1 läuft. Ich denke jedoch, dass es Probleme geben wird, wenn ich andere Abhängigkeiten in meinen .NET 4.6.1-Projekten habe.

+0

Welche anderen Abhängigkeiten verursachen Probleme in Ihrem .NET 4.6.1-Projekt? –