[英]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.