我想在Visual Studio 2017中轻松创建F#Azure Functions(v2)项目。
是否有一些带有模板F#项目的ZIP文件,我可以使用Visual Studio Publish上下文菜单进行发布?
我希望VS有一个F#Azure Function Project模板,就像C#。
一样答案 0 :(得分:7)
缺少F#的Azure Functions模板,这意味着无法在Visual Studio和Function CLI中创建F#预编译项目。
有一个开放github issue来引入这样的支持。即使从这个问题中看不出来,我也被告知模板即将推出。
目前,你需要:
您可以使用this sample作为起点,但请务必更新到最新版本的NuGet包。
答案 1 :(得分:4)
对我来说,我必须将C#函数项目转换为F#:
.csproj
重命名为.fsproj
.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.json
和local.settings.json
设置为<Content...
而不是<None...
,以便将其复制到输出文件。
Microsoft.NET.Sdk.Functions
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
Publish...
Azure Function App
并按照说明进行操作。确保选择Run from pakcage file
。