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

时间:2018-04-28 17:15:31

标签: azure f# visual-studio-2017 azure-functions

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

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

我希望VS有一个F#Azure Function Project模板,就像C#。

一样

C# Azure Function Project Template

Publish Menu

2 个答案:

答案 0 :(得分:7)

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

有一个开放github issue来引入这样的支持。即使从这个问题中看不出来,我也被告知模板即将推出。

目前,你需要:

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

您可以使用this sample作为起点,但请务必更新到最新版本的NuGet包。

答案 1 :(得分:4)

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

  1. 创建C#Azure函数项目
  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>

确保将host.jsonlocal.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

  1. 现在您可以部署了。只需右键单击该项目,然后单击Publish...
  2. 选择Azure Function App并按照说明进行操作。确保选择Run from pakcage file

enter image description here