如何在 Visual Studio 2017 中为 .Net core 2.1 应用程序引用 F# 交互中的 Dll?



我在Windows上的Visual Studio 2017中创建了一个.Net core 2.1 F#控制台应用程序。我会在 F# 交互窗口中尝试代码。但是,右键单击Dependencies不会显示发送对 F# 交互窗口的引用的命令。展开NuGet树可以找到DLL文件名,但它们没有完整路径,因此我无法手动运行#r ".../full path/Akka.FSharp.dll";;

  1. 在哪里可以找到 DLL 文件?
  2. 是否可以添加 .Net 核心引用的 DLL?

测试 .Net 核心应用程序的代码。

open System
open Akka.FSharp
let system = System.create "MovieStreamingActorSystem" <| Configuration.load ()
type ProcessorMessage = ProcessJob of int * int * string
let processor (mailbox: Actor<ProcessorMessage>) =
let rec loop () = actor {
let! m = mailbox.Receive ()
printfn "Message %A" m
return! loop ()
}
loop ()
[<EntryPoint>]
let main argv =
let processorRef = spawn system "processor" processor
processorRef <! ProcessJob(1, 2, "3")
0 

此时无法执行此操作,因为 F# 交互不支持 .net 核心。 🙃 但是,由于 API 表面几乎与 .net 4.7 相同,您可以直接引用它即可获取必要的包,只需直接获取所需的任何 dll 并使用#r

#if INTERACTIVE
#r "System.IO.Compression.FileSystem.dll"
#endif

例如,这将允许您通过从 .net 拉入压缩 dll 来对 zip 存档使用一些扩展方法。

.net core dll 将打包在publish文件夹中,如果你决定创建一个独立于框架的 pacakage。无论您需要什么完整的框架dll进行fsharp interactive,只需直接将它们拉下来或拉到另一个项目即可。

顺便说一下,如果你想知道 .net 核心 nuget 包被拉到哪里,它就在:C:Users$USERNAME.nugetpackages.您应该找到 net45 和 netstandard2 版本(如果支持(。

更新:在VS2019预览版中,F# Interactive是dotnetcore,可以引用dotnetstandard dll。

最新更新