注: ここでは、完全なフレームワークではなく、dotnet コアについて説明します。完全なフレームワークについては、これに関するドキュメントがたくさんありますが、これは dotnet コアです。
によって作成された F# ライブラリがあります。
dotnet new --lang F#
ASP.NET Core RC2 C# アプリケーション (VS の [ファイル] -> [新しいプロジェクト] で作成)。
現在、C# から F# ライブラリを使用しています (非常に一般的なシナリオだと思います…)。F# プロジェクトは、他の .net ライブラリと同様に project.json で参照されます (依存関係の下にリストすることにより)。
これですべてがコンパイルされ、正常に動作します。これは素晴らしいことです。
唯一の問題は、VS がサポートしていないように見えることです。インテリセンスがなく、C# の F# 関数を使用する行がエラーとしてマークされます。C# から F# へのデバッグも機能しません。VS Codeを搭載したMacで試してみましたが、そこも同じです…
コンパイルを押すと、コンパイラはこれを理解し、すべて問題ありません。
このスクリーンショットはそれを要約したものです (ここで C# から F# 関数を呼び出します)。
したがって、基本的には、まだコンパイルできる大量のエラーを含む VS ソリューションになりました。
これが単純なリプリケータです。
質問:
- VSでインテリセンスとデバッグがまったく機能する必要がありますか?
- はいの場合、私は何を間違えましたか?
- いいえの場合、このシナリオは将来カバーされる予定ですか?
再現者からのコードは次のとおりです。
F# ライブラリ - project.json (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# ライブラリ、コード:
namespace FSharpLibrary
module Sample =
let public FSharpFunction number =
printfn "Hello From F#, %d" number
C# アプリケーション (ここではコンソール アプリを使用しますが、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();
}
}
}
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"
}
}
}
ありがとう