注意:这里我谈论的是dotnet core而不是完整的框架!对于完整的框架,有很多文档可以参考,但是这是关于dotnet core的。
我有一个由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上尝试过,结果也相同...
当我点击编译时,编译器会解决这个问题,一切正常。
所以基本上我得到了一个有许多错误的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 core 相同)
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"
}
}
}
谢谢