【发布时间】:2016-10-09 16:46:59
【问题描述】:
注意:这里我说的是 dotnet core 而不是完整的框架!对于完整的框架,有很多关于此的文档,但这是 dotnet core。
我有一个由
创建的 F# 库dotnet new --lang F#
还有一个 ASP.NET Core RC2 C# 应用程序(由 File->New Project in VS 创建)。
现在我使用来自 C# 的 F# 库(我猜这是一个非常常见的场景……)。 F# 项目在 project.json 中被引用为任何其他 .net 库(通过将其列在依赖项下)
现在所有这些都可以编译并且工作正常,太棒了!
唯一的问题是VS似乎不支持它。没有智能感知和行,我使用 C# 中的 F# 函数被标记为错误。从 C# 到 F# 的调试也不起作用。我在带有 VS Code 的 Mac 上尝试过,那里也一样……
当我点击编译时,编译器会解决这个问题,一切都很好。
这个截图总结了它(这是我从 C# 调用 F# 函数的地方):
所以基本上我最终得到了带有一堆错误的 VS 解决方案,但仍然可以编译。
Here 是一个简单的复制器。
问题:
- 智能感知和调试是否应该在 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"
}
}
}
谢谢
【问题讨论】:
-
我已经删除了我的答案,我认为最好把它留在那里,以防其他人想像我一样回答 - 这就是 QA 网站的全部意义,有人提出问题,并且在上下文中和上下文之外都提供了多个答案。我为您找到了以下内容:github.com/Microsoft/visualfsharp/wiki/… 似乎还不支持调试,目前似乎对 VS 的支持也很差。
-
@Krohn 我补充说这不是完整的框架,所以我认为不会有任何新的答案。感谢您的 github 页面。我已经看到了,确实说它不受支持,但该页面上次更新于 1 月 27 日,那是在 ASP.NET Core 的 RC1/Preview1 版本之前,所以我不确定它是 100%准确。
-
好的,所以根据github的讨论,我这里描述的是当前阶段,不支持智能感知和调试:github.com/dotnet/roslyn-project-system/issues/219github.com/Microsoft/visualfsharp/issues/1193github.com/Microsoft/visualfsharp/issues/496
-
据我所知,用于 F# 的 .NET core 仍在开发中,它将与 F# 4.1 和 Visual Studio 15 一起发布。
-
@StefanoBalzarotti .NET Core 版本独立于 VS 版本和 F# 版本。目前该工具不是很好,但它可以工作..(顺便说一句。它在预览阶段适用于 C# 和 F#)VS Code 甚至具有用于互操作案例的智能感知。但是,是的,VS15 很有可能会有更好的支持。我想指出的是:今天在 .NET Core 上使用 F# 已经成为可能,但有一些缺点。
标签: .net visual-studio f# asp.net-core dotnet-cli