未找到F#Async.Map

未找到F#Async.Map,f#,onvif,F#,Onvif,我有消息来源 当我尝试构建这个解决方案时,我在onvif.utils项目中遇到了以下问题 use! response = request.AsyncGetResponse() |> Async.Map(fun x-> x:?>HttpWebResponse) Error: Method or object constructor 'Map' not found D:\Working\onvifdm\onvifdm-code-96-trunk\onvif\onvif.utils

我有消息来源

当我尝试构建这个解决方案时,我在
onvif.utils
项目中遇到了以下问题

use! response = request.AsyncGetResponse() |> Async.Map(fun x-> x:?>HttpWebResponse)

Error: Method or object constructor 'Map' not found
D:\Working\onvifdm\onvifdm-code-96-trunk\onvif\onvif.utils\OdmSession.fs

您可以使用以下代码作为替换:

let! webResponse = request.AsyncGetResponse()
use response = webResponse:?>HttpWebResponse

此外,您还可以编写自己的异步类型扩展-下面是一个方法。您只需为上述代码实现高阶函数。

对于那些仍在寻找答案的人,问题在于Async引用了错误的类。将其更改为Microsoft.FSharp.Control.Async,问题应该得到解决。

这里有一个扩展Async的函数,它来自于上的一个有用的源代码

它具有类型签名
('a->'b)->Async

例如—

let onInts = async { return 1 }
。。。是一个
异步
,并且

let onStrings = Async.map (fun x -> x.ToString()) onInts

。。。生成一个
Async

此函数在您的项目中定义:因此,如果它找不到它,那么肯定是项目文件或其他方面有问题。不,
Microsoft.FSharp.Control.Async.map
仍然给我提供
未定义“map”
let onStrings = Async.map (fun x -> x.ToString()) onInts