注意:这里我讲的是dotnet核心,而不是完整的框架!对于完整的框架,有很多关于此的文档,但这是dotnet核心.
我有一个F#库
dotnet new --lang F#
Run Code Online (Sandbox Code Playgroud)
和一个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"
]
} …Run Code Online (Sandbox Code Playgroud) 我需要找到一种使用最新的asp.net 5和mvc 6 web api在F#中构建休息服务的方法.Visual Studio 2015中是否有任何直接支持作为项目模板?如果没有,有人可以请我走上正确的道路如何进行?一种选择可能是构建一个F#库,然后从C#asp.net mvc 6项目中调用它.但是我会对构建原生F#mvc 6 web api非常感兴趣.谢谢!
谷歌退回了以下项目:https://github.com/fsprojects/fsharp-dnx
HelloFSharp示例工作正常,但无法管理HelloMVC项目构建:
dnx web有以下错误:
System.TypeLoadException: Could not load type 'Microsoft.Extensions.Logging.ILogValues' from assembly 'Microsoft.Extensions.Logging.Abstractions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'.
Run Code Online (Sandbox Code Playgroud)F#type Something()和type SomethingF#有什么区别?
为什么ASP.NET Core 1.0 F#项目中引用的此片段有效:
open System
open Microsoft.AspNetCore.Hosting
open Microsoft.AspNetCore.Builder
open Microsoft.AspNetCore.Hosting
open Microsoft.AspNetCore.Http
type Startup() =
member this.Configure(app: IApplicationBuilder) =
app.Run(fun context -> context.Response.WriteAsync("Hello from ASP.NET Core!"))
[<EntryPoint>]
let main argv =
let host = WebHostBuilder().UseKestrel().UseStartup<Startup>().Build()
host.Run()
printfn "Server finished!"
0
Run Code Online (Sandbox Code Playgroud)
但这失败了:
open System
open Microsoft.AspNetCore.Hosting
open Microsoft.AspNetCore.Builder
open Microsoft.AspNetCore.Hosting
open Microsoft.AspNetCore.Http
type Startup =
member this.Configure(app: IApplicationBuilder) =
app.Run(fun context -> context.Response.WriteAsync("Hello from ASP.NET Core!"))
[<EntryPoint>]
let main argv …Run Code Online (Sandbox Code Playgroud)