15

注: ここでは、完全なフレームワークではなく、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 ソリューションになりました。

これが単純なリプリケータです

質問:

  1. VSでインテリセンスとデバッグがまったく機能する必要がありますか?
  2. はいの場合、私は何を間違えましたか?
  3. いいえの場合、このシナリオは将来カバーされる予定ですか?

再現者からのコードは次のとおりです。

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"
    }
  }
}

ありがとう

4

1 に答える 1

2

したがって、現在上で説明したことは、プレビュー ツールを使用して Visual Studio 2015 で利用できるすべてのサポートです。Visual Studio 15 は改善されることを願っていますが、現在のプレビュー (プレビュー 5)には .NET Core のサポートがまったくありません

試してみる価値があるのは、Visual Studio Code です。F# では、C# で定義されている型のインテリセンスを取得します。そのため、F# と C# の相互運用性については、現在 VS Code は完全な VS よりもはるかに優れたサポートを提供しています。

于 2016-11-13T21:29:53.917 に答える