Почему хост. json не копируется в вывод в проекте F # Azure Функции? - PullRequest
3 голосов
/ 03 марта 2020

В простом F # Azure Хост проекта функций. json не копируется в вывод в F # Azure Проект функций (тот же local.settings. json), даже если это указано в fsharp- azure -functions -signalr-problem.fsproj:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <AzureFunctionsVersion>v3</AzureFunctionsVersion>
    <RootNamespace>fsharp_azure_functions_signalr_problem</RootNamespace>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.SignalRService" Version="1.0.2" />
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.3" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="negotiate.fs" />
  </ItemGroup>
  <ItemGroup>
    <None Update="host.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="local.settings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <CopyToPublishDirectory>Never</CopyToPublishDirectory>
    </None>
  </ItemGroup>
</Project>

В том же проекте C# такой проблемы нет.

Пример моего проекта F # вы можете git clone https://github.com/ed-ilyin/fsharp-azure-functions-signalr-problem.git

Без хоста . json файл У меня следующая ошибка:

> func start
...
Microsoft.Azure.WebJobs.Host: Error indexing method 'negotiate'. Microsoft.Azure.WebJobs.Host: Cannot bind parameter 'connectionInfo' to type SignalRConnectionInfo. Make sure the parameter Type is supported by the binding. If you're using binding extensions (e.g. Azure Storage, ServiceBus, Timers, etc.) make sure you've called the registration method for the extension(s) in your startup code (e.g. builder.AddAzureStorage(), builder.AddServiceBus(), builder.AddTimers(), etc.).
...

Ответы [ 2 ]

2 голосов
/ 03 марта 2020

Таким образом, ручное копирование в скомпилированную папку может решить эту проблему. Я проверил F #, похоже, проблема исходит из вашего файла .fsproj, определение хоста. json должно выглядеть так:

<Content Include="host.json">
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>

Это прекрасно работает на моей стороне.

0 голосов
/ 06 мая 2020

Нет Включает также работает:

<None Include="host.json">
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>

Проблема отслеживается в эта проблема .

C# проекты по умолчанию включают все файлы через подстановочный знак , Вот почему Обновление работает. В F # файлы не включены по умолчанию (потому что порядок файлов имеет значение). Так что обновлять нечего.

...