[英]C# - F# Interop support in Visual Studio 2015 on .NET Core
注意:這里我講的是dotnet核心,而不是完整的框架! 對於完整的框架,有很多關於此的文檔,但這是dotnet核心。
我有一個F#庫
dotnet new --lang F#
和一個ASP.NET Core RC2 C#應用程序(由VS中的File-> New Project創建)。
現在我使用來自C#的F#庫(我猜這是一個非常常見的場景......)。 在Project.json中引用F#項目作為任何其他.net庫(通過在依賴項下列出它)
現在所有這些編譯和工作正常,這是偉大的!
唯一的問題是VS似乎不支持它。 沒有intellisense和行,我使用C#中的F#函數標記為錯誤。 從C#到F#的調試也不起作用。 我在帶有VS Code的Mac上嘗試過,同樣的......
當我點擊編譯時,編譯器會想出來,一切都很好。
所以基本上我最終得到了VS解決方案,其中包含一堆錯誤,仍然可以編譯。
這是一個簡單的復制器。
問題:
以下是重現器的代碼:
F#library - 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#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"
}
}
}
謝謝
因此,目前我所描述的是您在Visual Studio 2015中使用預覽工具獲得的所有支持。 Visual Studio 15希望更好,但是當前預覽版(預覽版5) 根本沒有.NET Core支持 。
值得一試的是Visual Studio Code。 在F#中,您可以獲得在C#中定義的類型的智能感知。 因此對於F#-C#互操作性,目前VS Code比完整的VS有更好的支持。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.