如何在Visual Studio 2017中创建F#Azure Functions(v1和v2)项目?

Ton*_*ony 5 f# azure azure-functions visual-studio-2017

我想在Visual Studio 2017中轻松创建F#Azure Functions(v2)项目.

是否有一些带有Template F#项目的ZIP文件,我可以使用Visual Studio Publish上下文菜单进行发布?

我希望VS有一个F#Azure Function Project模板,就像它对C#一样.

C#Azure功能项目模板

发布菜单

Mik*_*kov 8

缺少F#的Azure Functions模板,这意味着无法在Visual Studio和Functions CLI中创建F#预编译项目.

有一个开放的github问题来介绍这种支持.即使从这个问题不明显,我被告知模板即将推出.

目前,您需要:

  • 创建一个通用的F#类库项目
  • 参考函数SDK NuGet包
  • 为您的函数添加静态方法

您可以使用此示例作为起点,但请务必更新到最新版本的NuGet包.


Alk*_*sai 5

对我来说,我必须将C#函数项目转换为F#:

  1. 创建C#Azure Function项目
  2. 重命名.csproj为.fsproj
  3. 编辑.fsproj文件,并确保其中包含以下各项:

  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <AzureFunctionsVersion>v2</AzureFunctionsVersion>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.24" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Function1.fs" />
    <Content Include="host.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
    <Content Include="local.settings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <CopyToPublishDirectory>Never</CopyToPublishDirectory>
    </Content>
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

确保将host.json和设置local.settings.json为,<Content...而不是将<None...其复制到输出文件。

  1. 确保已Microsoft.NET.Sdk.Functions安装
  2. 您的Function1.fs文件应如下所示(对于HttpTrigger)

namespace FunctionApp1

open System
open Microsoft.Azure.WebJobs
open Microsoft.Azure.WebJobs.Host
open System;
open System.IO;
open System.Threading.Tasks;
open Microsoft.AspNetCore.Mvc;
open Microsoft.Azure.WebJobs;
open Microsoft.Azure.WebJobs.Extensions.Http;
open Microsoft.AspNetCore.Http;
open Microsoft.Extensions.Logging;

module Function1 =
    [<FunctionName("Function1")>]
    let Run ([<HttpTrigger(AuthorizationLevel.Function, [|"post"|])>] req: HttpRequest) (log: ILogger) = 
        async {
            return "some result"
        }
        |> Async.StartAsTask
Run Code Online (Sandbox Code Playgroud)
  1. 现在您可以部署了。只需右键单击该项目,然后单击Publish...
  2. 选择Azure Function App并按照说明进行操作。确保选择Run from pakcage file。

在此处输入图片说明