运行 FSI 中的异步计算表达式

Running async computation expression in FSI

我正在尝试 运行 FSI 中的此代码

#r @"C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref.0.1\ref\net6.0\System.Net.Http.dll"

async {
    let httpClient = new System.Net.Http.HttpClient()
    let! response = httpClient.GetAsync("") |> Async.AwaitTask
    response.EnsureSuccessStatusCode() |> ignore
    return! response.Content.ReadAsStringAsync() |> Async.AwaitTask
}

我收到以下错误

Error FS0193: The module/namespace 'System.Threading.Tasks' from compilation unit 'System.Runtime' did not contain the namespace, module or type 'Task`1'

然而,当我将该代码粘贴到项目的文件中时,它会按预期进行编译。

我错过了什么?

我不确定您为什么会收到此错误,但您应该能够在不指定完整路径的情况下引用标准 .NET 库。

我尝试使用以下内容创建一个 F# 脚本,它运行得非常好(我仍在使用 F# 5,但我不认为这会在新版本中发生变化):

#r @"System.Net.Http.dll"

async {
    let httpClient = new System.Net.Http.HttpClient()
    let! response = httpClient.GetAsync("http://tomasp.net") |> Async.AwaitTask
    response.EnsureSuccessStatusCode() |> ignore
    return! response.Content.ReadAsStringAsync() |> Async.AwaitTask
}
|> Async.RunSynchronously

我只需要添加一个真正的 URL 来下载和 Async.RunSynchronously 实际 运行 代码。