2016-06-28 34 views
7

Questo problema è esattamente come descritto nel titolo.Impossibile fare riferimento a una libreria di classi F #

Ho una libreria di classe F # portatile. Ho creato un'applicazione Web ASP.NET Core (sia .NET Framework che .NET Core), da cui ho cercato di aggiungere un riferimento alla mia libreria di classi F #.

Cercando di aggiungere il riferimento dà un messaggio:

i seguenti progetti non sono supportati come riferimenti:

tipo di progetto non è supportato da progetto attuale e non può (sic) fare riferimento.

Questo è estremamente deludente, poiché .NET Core è ora in disponibilità generale.

Esistono soluzioni alternative mentre viene risolto questo errore?

risposta

3

Ho un progetto, che ho iniziato con Beta8 bit di .net core e da allora ho una libreria F #, che utilizzo da un'app C# di asp.net. (Btw here è un campione minimo basato RC2 per fare riferimento alla F # lib da un nucleo console app net based)

Ecco come ho fatto:

Attualmente (secondo la mia conoscenza) non v'è alcun modello in VS per creare una libreria F # basata su coreCLR (i modelli PLC in F # sono tutti basati su framework completo, ma non è ancora possibile fare riferimento da asp.net core anche se viene eseguito su framework completo), quindi è necessario farlo con la riga di comando. Questo è fatto da:

dotnet new --lang F# 

Questo ti crea un ciao mondo app coreCLR F #. Puoi trasformare l'app in una libreria di classi modificando il file project.json.

Se si dispone di una soluzione VS e si fa clic su "Aggiungi" -> "Progetto esistente" è possibile selezionare il file project.json. In questo modo lo aggiungi alla tua soluzione (e anche un file xproj verrà creato).

Quindi a questo punto si avrà il progetto F # basato su coreCLR nella propria soluzione. Credo che facendo clic con il tasto destro del mouse sul progetto asp.net core e andando su "Aggiungi" -> "Riferimento" -> Progetti-> Soluzioni e selezionando la libreria F # puoi già farne riferimento. Se questo non funziona, puoi farlo manualmente: basta elencare il progetto F # sotto le "dipendenze" nel project.json dell'applicazione asp.net core.

Se l'applicazione principale asp.net viene eseguita su un framework completo, è comunque necessario eseguire questi passaggi. In realtà non importa.

Ora la parte brutta:

  • In RTM (pubblicato il Lunedi) il comando “dotnet nuova” crea un uncompliable F # app, a causa di alcuni problemi di dipendenze. Questo è tracciato here (il titolo dice "su macOS", ma è lo stesso su Windows) e non appena viene risolto dovrebbe andare bene (o se non hai ancora installato RTM e hai RC2 sei anche bravo).
  • Intellisense e il debug attraverso F # e C# non funziona (ho postato here)
+0

c'è qualche informazioni più recenti su questo? Sto cercando di ottenere una libreria di classi F # che funzioni in una soluzione con altri progetti core di C# asp.net, ma senza avere fortuna. C'è un buon esempio di project.json attualmente funzionante per questo scenario? –

+0

@JoeAudette Ecco una descrizione più dettagliata con una soluzione di esempio: http://kalapos.azurewebsites.net/referencing-an-f-library-from-c-on-net-core Secondo la mia conoscenza, questa è la fase attuale (ed è così che lavoro oggi ...). Secondo la roadmap "L'esperienza IDE migliore con il supporto dell'area di lavoro sul servizio di lingua F #" arriverà negli strumenti RTM (cosa significa esattamente che non lo so ..) https://blogs.msdn.microsoft.com/dotnet/ 2016/07/15/net-core-roadmap/ – gregkalapos

+0

@gegkalapos, grazie! il problema che sto avendo è la mia libreria di classe F # Voglio creare un controller, in project.json ho aggiunto le dipendenze necessarie ma VS dice che lo spazio dei nomi non è disponibile su questa riga nel mio codice, come se non vedesse il dipendenze di riferimento: open Microsoft.AspNetCore.Mvc –

1

Sebbene .NET Core sia stato ufficialmente rilasciato, la maggior parte dei pacchetti di nuget nell'applicazione Web Core di ASP.NET è in pre-release. Inoltre, sebbene il modello di identità della struttura dell'entità sia stato ripulito, il mio tentativo di modificare le colonne chiave per utenti e ruoli dalle stringhe agli ints ha generato un errore oscuro quando ho tentato di implementare le migrazioni di Entity Framework. So che posso farlo per un'applicazione Web .NET, anche se il processo è goffo in alcuni punti. Quindi per ora sono tornato a utilizzare un'applicazione Web .NET Framework. Non vedo l'ora di vedere una versione completa delle applicazioni Web ASP.NET Core. Non è pronto, ma sembra molto promettente.

Problemi correlati