Nota: qui parlo di core dotnet e non di framework completo! Per il framework completo ci sono un sacco di documenti su questo, ma questo è core dotnet.C# - F # Supporto di interoperabilità in Visual Studio 2015 su .NET Core
devo una libreria # F creato da
dotnet new --lang F#
E un # un'applicazione ASP.NET core RC2 C (creato da File-> Nuovo progetto in VS).
Ora uso la mia libreria F # da C# (immagino uno scenario molto comune ...). Il progetto F # è referenziato in project.json come qualsiasi altra libreria .net (elencandola sotto dipendenze)
Ora tutto questo compila e funziona bene, il che è fantastico!
L'unico problema è che VS non sembra supportarlo. Non c'è intellisense e le linee, dove uso le funzioni F # da C# sono contrassegnate come errori. Anche il debug da C# a F # non funziona. L'ho provato su un Mac con VS Code, lo stesso ...
Quando premo compilare, i compilatori lo capiscono e tutto va bene.
Questa schermata riassume (questo è dove io chiamo una funzione F # da C#):
Quindi, in pratica ho finito con la soluzione VS con un mucchio di errori in esso, che compila ancora.
Here è un semplice riproduttore.
Domande:
- caso IntelliSense e il lavoro di debug in VS a tutti?
- Se sì, cosa ho sbagliato?
- In caso negativo, è previsto che questo scenario venga coperto nel futuro ?
Ecco il codice dal riproduttore:
F # biblioteca - project.json (creato da cli - dotnet new --lang F#
)
"version": "1.0.0-*",
"buildOptions": {
"compilerName": "fsc",
"compile": {
"includeFiles": [
"FSharpLibrary.fs"
]
}
},
"dependencies": {
"Microsoft.FSharp.Core.netcore": "1.0.0-alpha-160316",
"NETStandard.Library": "1.5.0-rc2-24027"
},
"tools": {
"dotnet-compile-fsc": {
"version": "1.0.0-*",
"imports": [
"dnxcore50",
"portable-net45+win81",
"netstandard1.3"
]
}
},
"frameworks": {
"netstandard1.5": {
"imports": [
"portable-net45+win8",
"dnxcore50"
]
}
}
F # biblioteca, il codice:
namespace FSharpLibrary
module Sample =
let public FSharpFunction number =
printfn "Hello From F#, %d" number
Applicazione C# (qui uso un'app per console, ma le stesse cose di asp.net core)
using System;
namespace ConsoleAppCSharp
{
public class Program
{
public static void Main(string[] args)
{
FSharpLibrary.Sample.FSharpFunction(42); //<- This is red. and marked as error.
Console.ReadKey();
}
}
}
C# applicazione console project.json
{
"version": "1.0.0-*",
"buildOptions": {
"emitEntryPoint": true
},
"dependencies": {
"LibraryFSharp": "1.0.0-*",
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0-rc2-3002702"
}
},
"frameworks": {
"netcoreapp1.0": {
"imports": "dnxcore50"
}
}
}
Grazie
Ho cancellato la mia risposta, ho pensato che sarebbe stato meglio lasciarlo lì in caso qualcun altro pensasse di rispondere come ho fatto io - questo è il punto centrale di un sito di QA, viene posta una domanda e sono fornite più risposte sia all'interno che all'esterno del contesto. ho trovato quanto segue per voi: https://github.com/Microsoft/visualfsharp/wiki/F%23-for-CoreCLR---Status Sembrerebbe il debug non è solo ancora supportato, sembra anche avere un supporto VS insufficiente al momento. – Eon
@Krohn Ho aggiunto alla domanda che questo non è un framework completo, quindi penso che non ci sarà una nuova risposta. Grazie per la pagina Github. L'ho già visto e questo dice che non è supportato, ma quella pagina è stata aggiornata il 27 gennaio scorso, che era prima della release RC1/Preview1 di ASP.NET Core, quindi non sono sicuro che sia al 100% accurate. – gregkalapos
Bene, quindi in base alle discussioni su github, quello che ho descritto qui è lo stadio corrente e intellisense e debug non sono supportati: https://github.com/dotnet/roslyn-project-system/issues/219 https: // github. it/Microsoft/visualfsharp/issues/1193 https://github.com/Microsoft/visualfsharp/issues/496 – gregkalapos