Suporte de interoperabilidade de F # no Visual Studio 2015 no .NET Core
Nota: aqui eu falo sobre o núcleo dotnet e não o quadro completo! Para uma estrutura completa, há muitos documentos sobre isso, mas esse é o núcleo do dotnet.
Eu tenho uma biblioteca F # criada por
dotnet new --lang F#
E um aplicativo ASP.NET Core RC2 C # (criado por Arquivo-> Novo Projeto no VS).
Agora eu uso minha biblioteca de F # em C # (acho que um cenário muito comum ...). O projeto F # é referenciado no project.json como qualquer outra biblioteca .net (listando-o em dependências)
Agora tudo isso compila e funciona bem, o que é ótimo!
O único problema é que o VS não parece suportá-lo. Não há intellisense e linhas, onde eu uso as funções F # do C # são marcadas como erro. A depuração de C # para F # também não funciona. Eu tentei em um Mac com código VS, mesmo lá…
Quando clico em compilar, os compiladores descobrem isso e tudo está bem.
Esta captura de tela resume-a (é aqui que chamo uma função F # do C #):
Então, basicamente, acabei com a solução VS com vários erros, que ainda são compilados.
Aqui é um reprodutor simples.
Questões:
O intellisense e a depuração devem funcionar no VS?Se sim, o que fiz de errado?Se não, esse cenário está planejado para ser coberto no futuro?Aqui está o código do reprodutor:
Biblioteca F # - project.json (criada por 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"
]
}
}
Biblioteca F #, o código:
namespace FSharpLibrary
module Sample =
let public FSharpFunction number =
printfn "Hello From F#, %d" number
Aplicativo C # (aqui eu uso um aplicativo de console, mas o mesmo acontece com o núcleo do asp.net)
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();
}
}
}
Aplicativo de console C # 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"
}
}
}
obrigado