无法使用 F# 在单声道中找到 akka.dll

Unable to find akka.dll in mono using F#

我想用单声道在 OSX 上试用 akka.net F# API。因为我只是在玩,所以我想我会添加一个简单的脚本文件来开始,但是当我尝试创建演员系统时它失败了。重现错误的简单 .fsx:

#r "./packages/Akka/lib/net45/Akka.dll"
#r "./packages/FsPickler/lib/net45/FsPickler.dll"
#r "./packages/FSPowerPack.Linq.Community/lib/net40/FSharp.PowerPack.Linq.dll"
#r "./packages/Akka.FSharp/lib/net45/Akka.FSharp.dll"

open Akka.FSharp

let system = System.create "my-system" (Configuration.load())

我认为错误信息很清楚:

Users/tomasjansson/git/suave_akka_react/stdin(0,1): error FS0078: Unable to find the file 'Akka.dll' in any of /Library/Frameworks/Mono.framework/Versions/4.2.1/lib/mono/4.5 /Users/tomasjansson/git/suave_akka_react /Library/Frameworks/Mono.framework/Versions/4.2.1/lib/mono/4.5/

/Users/tomasjansson/git/suave_akka_react/stdin(0,1): error FS0078: Unable to find the file 'Akka.dll' in any of /Library/Frameworks/Mono.framework/Versions/4.2.1/lib/mono/4.5 /Users/tomasjansson/git/suave_akka_react /Library/Frameworks/Mono.framework/Versions/4.2.1/lib/mono/4.5/ Could not load signature of Akka.FSharp.System:create due to: Could not load file or assembly or one of its dependencies. assembly:Akka, Version=1.0.5.15, Culture=neutral, PublicKeyToken=null type:

我找不到 Akka.dll,但我确实在文件开头引用了它。怎么回事?

尝试将其添加到文件的顶部 #I "./packages/Akka/lib/net45"

不知道为什么,它可能被编译为期望本地副本或类似的东西。

这是代码。我能够在 OSX 上让它在单声道上工作。我使用 paket 下载脚本中的依赖项。在交互式会话中,必须引用脚本路径。

open System
open System.IO

Environment.CurrentDirectory <- __SOURCE_DIRECTORY__

if not (File.Exists "paket.exe") then
    let url = "http://fsprojects.github.io/Paket/stable"
    use wc = new Net.WebClient() in let tmp = Path.GetTempFileName() in let stable = wc.DownloadString(url) in wc.DownloadFile(stable, tmp); File.Move(tmp,Path.GetFileName stable)

#r "paket.exe"

Paket.Dependencies.Install """
    source https://nuget.org/api/v2
    nuget Akka
    nuget FsPickler
    nuget FSPowerPack.Core.Community
    nuget FSPowerPack.Linq.Community
    nuget Akka.FSharp
""";;

#I "./packages/Akka/lib/net45"
#I "./packages/Akka.FSharp/lib/net45"
#I "./packages/FsPickler/lib/net45"
#I "./packages/FSPowerPack.Core.Community/Lib/net40"
#I "./packages/FSPowerPack.Linq.Community/Lib/net40"
#I "./packages/Newtonsoft.Json/lib/net45"


#r "Akka.dll"
#r "FsPickler.dll"
#r "FSharp.PowerPack.Linq.dll"
#r "Akka.FSharp.dll"

open Akka.FSharp

let system = System.create "my-system" (Configuration.load())