Мне пришлось пройти через преобразование проекта функции C # в F #:
- Создание проекта функции C # Azure
- переименовать
.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
.