如何在Visual Studio 2017中创建F# Azure Functions项目及获取v2版模板?
嘿,我来帮你搞定这两个关于F# Azure Functions和Visual Studio 2017的问题:
1. 在Visual Studio 2017中创建F# Azure Functions(v1及v2版本)项目
v1版本(基于.NET Framework)
这个版本有官方模板,步骤很直接:
- 先确保你在安装VS2017时勾选了Azure开发工作负载和F#语言支持,如果没装可以通过VS安装程序补充安装
- 打开VS2017,点击「创建新项目」
- 在搜索框输入「Azure Functions」,找到F# Azure Functions模板(这就是v1版本的模板,基于.NET Framework)
- 填写项目名称和存储路径,点击「确定」
- 在弹出的「新建Azure Functions」对话框里,选你需要的触发器类型(比如HTTP触发器、定时器触发器),确认框架是.NET Framework,最后点击「创建」就能得到可用的v1项目了
v2版本(基于.NET Core)
VS2017没有官方的F# v2模板,得手动搭建,步骤如下:
- 同样先确认安装了Azure开发工作负载和F#语言支持
- 先创建一个F# .NET Core类库项目
- 右键项目→「管理NuGet程序包」,安装以下必要包:
Microsoft.Azure.WebJobs(Functions核心运行包)Microsoft.Azure.WebJobs.Extensions.Http(如果用HTTP触发器,其他触发器对应安装扩展包)Microsoft.NET.Sdk.Functions(v2版本的Functions SDK)Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator(让VS识别这是个Functions项目)
- 在项目根目录添加
host.json文件,内容如下:{ "version": "2.0" } - 添加一个F#代码文件(比如
HttpTrigger.fs),写一个示例触发器代码:namespace FSharpFunctionV2 open Microsoft.Azure.WebJobs open Microsoft.Azure.WebJobs.Extensions.Http open Microsoft.AspNetCore.Http open Microsoft.Extensions.Logging open Microsoft.AspNetCore.Mvc module HttpTrigger = [<FunctionName("HttpTrigger")>] let Run ([<HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)>] req: HttpRequest, log: ILogger) = async { log.LogInformation("F# HTTP trigger v2 processed a request.") return OkObjectResult("Hello from F# Azure Functions v2!") :> IActionResult } |> Async.StartAsTask - 编辑项目文件(
.fsproj),添加以下属性,让VS识别为v2 Functions项目:<PropertyGroup> <AzureFunctionsVersion>v2</AzureFunctionsVersion> </PropertyGroup>
2. F# Azure Functions v2项目模板ZIP及VS原生模板支持
现成的可发布ZIP模板
当然有!你可以自己把上面搭建好的v2项目打包成ZIP,或者找社区分享的现成模板。这种模板导入VS后,完全支持通过VS的「发布」上下文菜单直接发布到Azure:
- 打包方法:把配置好的项目(包含正确的NuGet包、
host.json、代码文件和修改后的.fsproj)压缩成ZIP文件 - 导入VS:打开VS2017,选择「导入项目」→「从ZIP文件导入」,跟着向导完成导入
- 发布:右键导入后的项目,选择「发布」,选择Azure作为目标,后续流程和C# Functions项目完全一致
VS原生模板支持的情况
很可惜,Visual Studio 2017并没有为F# Azure Functions v2提供官方原生模板,不像C#那样可以直接选。这主要是因为当时Azure Functions团队的资源优先倾斜给了C#和JavaScript的生态支持,F#的官方模板支持是在后续的VS版本(比如2019及以后)才逐步完善的。所以在VS2017里,咱们只能靠手动搭建或者社区模板来实现。
内容的提问来源于stack exchange,提问作者Tony
相关产品推荐
相关产品推荐

