2016-06-09 91 views
15

注意:這裏我講的是dotnet核心而不是完整的框架!對於完整的框架,有很多關於此的文檔,但這是dotnet核心。C# - .NET Core上的Visual Studio 2015中的F#Interop支持

我有

dotnet new --lang F# 

而一個ASP.NET核心RC2 C#應用程序(通過創建文件 - >新建項目在VS)創建了一個F#庫。

現在我用C#中的F#庫(我想是一個非常常見的場景......)。 F#項目是在project.json中引用的任何其他.net庫(通過列出它依賴項下)

現在所有這些編譯和工作正常,這是偉大的!

唯一的問題是VS似乎不支持它。沒有智能感知和線條,我使用C#中的F#函數被標記爲錯誤。從C#調試到F#也不起作用。我在VS Code的Mac上試過它,同樣在那裏...

當我編譯時,編譯器會計算出來,一切正常。

這張截圖總結它(這就是我所說的從C#的F#函數): enter image description here

所以基本上我結束了在這一堆錯誤,仍然編譯VS解決方案。

Here是一個簡單的複製器。

問題:

  1. 應該IntelliSense和在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" 
    } 
    } 
} 

感謝

+0

我已經刪除了我的答案,認爲將它留在那裏可能會更好,因爲有人認爲與我一樣回答問題 - 這是QA站點的全部要點,問題會被提出並提供多個答案無論是在內部還是外部。 我發現下面爲您提供: https://github.com/Microsoft/visualfsharp/wiki/F%23-for-CoreCLR---Status 這似乎調試還不支持,它目前似乎也對VS支持不佳。 – Eon

+0

@Krohn我在這個問題中增加了一個不完整的框架,所以我認爲不會有任何新的答案。感謝github頁面。我已經看到並且確實表示它不被支持,但是該頁面在上次1月27日更新,該版本位於ASP.NET Core的RC1/Preview1版本之前,所以我不確定它是否爲100%準確。 – gregkalapos

+1

好吧,所以基於github討論,我在這裏描述的是當前階段,不支持智能感知和調試:https://github.com/dotnet/roslyn-project-system/issues/219 https:// github。 com /微軟/ visualfsharp/issues/1193 https://github.com/Microsoft/visualfsharp/issues/496 – gregkalapos

回答

2

所以目前什麼上述我是你必須在Visual Studio 2015年預覽工具都支持。 Visual Studio 15將有望更好,但目前預覽(Preview 5)does not have .NET Core support at all

值得嘗試的是Visual Studio Code。在F#中,您將獲得在C#中定義的類型的智能感知。因此,對於F#-C#互操作性,VS Code比完整的VS有更好的支持。

相關問題