2

我在 Mac 上使用 VS Code 和 Ionide 编辑 F# Azure Function 文件。

下面是我的小测试功能:

#if !COMPILED
#I "../packages/Microsoft.Azure.WebJobs/lib/net45/"
#r "Microsoft.Azure.WebJobs.Host.dll"
#endif

#r "System.Net.Http"
#r "Microsoft.WindowsAzure.Storage"
#r "Newtonsoft.Json"

open System
open System.Net
open System.Net.Http
open Microsoft.Azure.WebJobs.Host

type Item = { id: string; comment: string }

let Run(req: HttpRequestMessage, output: byref<Item>, log: TraceWriter) =
    let item = { id = "Some ID"; comment = "test comment" }
    output <- item 
    async {
        // createResponse has a red line beneath it
        return req.createResponse(HttpStatusCode.Created)
    } |> Async.StartAsTask    

在 VS Code 中查看此文件时,. 下方有一条红线createResponse

当我把鼠标放在上面createResponse时,错误信息是The field, constructor or member 'createResponse' is not defined.. 这是因为 Mono 的版本System.Net.Http不支持createResponse吗?

鉴于我不想在本地运行或编译这个文件,有没有办法告诉 Ionide 使用不同版本的System.Net.Http?

4

1 回答 1

0

CreateResponse方法是一种扩展方法——尽管它存在于命名空间中,但System.Net.Http它位于不同的程序集中。(我不确定它为什么在 Azure 中编译,也许默认添加了一些额外的引用?)

为了让 Ionide 开心,我添加了这些 nuget 包:

这些参考资料:

#I ".."
#r "packages/System.Net.Http.Formatting.Extension/lib/System.Net.Http.Formatting.dll"
#r "packages/Microsoft.AspNet.WebApi.Core/lib/net45/System.Web.Http.dll"
于 2017-06-22T10:48:49.157 回答