2016-06-28 8 views
7

Dieses Problem ist genau so, wie im Titel beschrieben.Kann keine F # -Klassenbibliothek referenzieren

Ich habe eine portable F # -Klassenbibliothek. Ich habe eine ASP.NET Core Web Application (sowohl .NET Framework als auch .NET Core) erstellt, von der ich versucht habe, einen Verweis auf meine F # -Klassenbibliothek hinzuzufügen.

Der Versuch, den Verweis hinzuzufügen gibt eine Nachricht:

Folgende Projekte werden nicht als Referenzen unterstützt:

Projekttyp durch aktuelle Projekt wird nicht unterstützt und kann nicht (sic) verwiesen werden.

Dies ist extrem enttäuschend, da der .NET Core jetzt in der allgemeinen Verfügbarkeit ist.

Gibt es Workarounds während dieser Fehler behoben wird?

Antwort

3

Ich habe ein Projekt, das ich mit Beta8 Bits von .net Core gestartet habe und seitdem habe ich eine F # -Bibliothek, die ich von einer asp.net Core C# App verwende. (Btw here ist ein RC2 auf Basis minimaler Proben zur Referenzierung der F # lib von einem Netto-Core basierte Konsole app)

Hier ist, wie ich es tat:

Aktuell (meines Wissens nach) gibt es keine Vorlage in VS um eine coreCLR-basierte F # -Bibliothek zu erstellen (die SPS-Vorlagen unter F # sind alle Full-Framework-basiert, aber Sie können immer noch nicht vom asp.net-Core aus referenzieren, selbst wenn es auf einem vollständigen Framework läuft), Sie müssen dies über die Befehlszeile tun. Dies geschieht durch:

dotnet new --lang F# 

Dies schafft Ihnen eine Hallo Welt coreCLR F # App. Sie können die App in eine Klassenbibliothek verwandeln, indem Sie die Datei project.json ändern.

Wenn Sie eine VS-Lösung haben und auf "Hinzufügen" -> "Vorhandenes Projekt" klicken, können Sie die Datei project.json auswählen. Auf diese Weise fügen Sie es zu Ihrer Lösung hinzu (und außerdem wird eine xproj-Datei erstellt).

An diesem Punkt haben Sie das coreCLR-basierte F # -Projekt in Ihrer Lösung. Ich glaube, indem ich mit der rechten Maustaste auf das asp.net-Kernprojekt klicke und auf "Hinzufügen" -> "Referenz" -> Projekte-> Lösungen gehe und die F # -Bibliothek auswähle, kann man schon darauf verweisen. Wenn dies nicht funktioniert, können Sie es manuell tun: Listen Sie einfach das F # -Projekt unter den "Abhängigkeiten" in der project.json der asp.net-Kernanwendung auf.

Wenn Ihre asp.net Core App auf dem vollständigen Framework ausgeführt wird, müssen Sie diese Schritte ausführen. Es ist eigentlich nicht wirklich wichtig.

Jetzt der schlechte Teil:

  • Im RTM (veröffentlicht am Montag) der „Dotnet neue“ Befehl erstellt eine uncompliable F # app, weil einige Abhängigkeitsprobleme. Dies wird verfolgt here (der Titel sagt "auf MacOS", aber es ist das gleiche unter Windows) und sobald es gelöst ist, sollte dies in Ordnung sein (oder wenn Sie RTM noch nicht installiert haben und Sie RC2 sind Sie auch gut).
  • Intellisense und Debuggen über F # und C# nicht (ich habe es here) auf diesem
+0

gibt es eine aktuellere Informationen funktionieren? Ich versuche, eine F # -Klassenbibliothek zu bekommen, die in einer Lösung mit anderen C# asp.net-Kernprojekten arbeitet, aber kein Glück hat. Gibt es ein gutes Beispiel für ein derzeit funktionierendes Projekt.json für dieses Szenario? –

+0

@JoeAudette Hier ist eine detailliertere Beschreibung mit einer Beispiellösung: http://kalapos.azurewebsites.net/referencing-an-f-library-from-c-on-net-core Nach meinem Wissen ist das die aktuelle Stufe (Und so arbeite ich heute ...). Laut der Roadmap "Bessere IDE-Erfahrung mit Workspace-Unterstützung für den F # -Sprachendienst" wird es in der RTM-Toolbox kommen (was genau das bedeutet, weiß ich nicht ..) https://blogs.msdn.microsoft.com/dotnet/ 2016/07/15/net-core-roadmap/ – gregkalapos

+0

@gegkalapos, danke! das Problem, das ich habe, ist meine F # -Klassenbibliothek Ich möchte einen Controller machen, in project.json habe ich die benötigten Abhängigkeiten hinzugefügt, aber VS sagt, dass der Namespace in dieser Zeile in meinem Code nicht verfügbar ist, so wie er das nicht sieht Abhängigkeiten, die ich referenziere: öffnen Microsoft.AspNetCore.Mvc –

1

Obwohl .NET Core offiziell veröffentlicht wurde, befinden sich die meisten Nuget-Pakete in der ASP.NET Core-Webanwendung in Vorabversion. Darüber hinaus hat mein Versuch, die Schlüsselspalten für Benutzer und Rollen von Strings in Ints zu ändern, einen obskuren Fehler erzeugt, obwohl ich das Entitätsframework-Identitätsmodell bereinigt hatte, als ich versuchte, Entity Framework-Migrationen zu implementieren. Ich weiß, dass ich es für eine .NET-Webanwendung tun kann, obwohl der Prozess an einigen Stellen klobig ist. Also jetzt habe ich wieder eine .NET Framework Web Application verwendet. Ich freue mich auf eine vollständig ausgereifte Version von ASP.NET Core Web Applications. Es ist nicht fertig, aber es sieht sehr vielversprechend aus.

Verwandte Themen