我在Mac上使用VS Code和Ionide编辑F#Azure功能文件。
以下是我的小测试功能:
#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
?
答案 0 :(得分: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"