【问题标题】:How to create a F# Azure Functions (v1 & v2) Project in Visual Studio 2017?如何在 Visual Studio 2017 中创建 F# Azure Functions (v1 & v2) 项目?
【发布时间】:2018-04-28 17:15:31
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    有一个开放的github issue 来介绍这种支持。尽管从这个问题上看不出来,但我被告知模板即将推出。

    现在,您需要:

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

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

    【讨论】:

    • 通用 F# 类库项目将缺少发布功能。
    • @Tony arghs... 你知道csproj 的哪一点使 Publish 出现在 C# 函数中吗?
    • 我不知道。但是有了这个缺失的部分,我们将(几乎?)准备好 Azure Functions F# 项目模板。
    • 或者你可以使用wizard from Rider
    【解决方案2】:

    对我来说,我必须将 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>
    

    确保将host.jsonlocal.settings.json 设置为&lt;Content... 而不是&lt;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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多