注意:这里我说的是 dotnet core,而不是完整的框架!对于完整的框架,有很多关于此的文档,但这是 dotnet 核心。
我有一个由创建的 F# 库
dotnet new --lang F#
还有一个 ASP.NET Core RC2 C# 应用程序(由 VS 中的 File->New Project 创建)。
现在我使用 C# 中的 F# 库(我猜这是一个非常常见的场景……)。F# 项目在 project.json 中与任何其他 .net 库一样引用(通过在依赖项下列出)
现在所有这些都可以编译并且工作正常,这太棒了!
唯一的问题是VS似乎不支持它。没有智能感知和行,我使用 C# 中的 F# 函数被标记为错误。从 C# 到 F# 的调试也不起作用。我在带有 VS Code 的 Mac 上尝试过,那里也一样……
当我点击编译时,编译器会解决这个问题,一切都很好。
此屏幕截图对其进行了总结(这是我从 C# 调用 F# 函数的地方):
所以基本上我最终得到了带有一堆错误的 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 核心相同)
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"
}
}
}
谢谢