IWebJobsStartup с функциями Azure v2

Я пытаюсь создать функцию Azure с V2 Runtime через Visual Studio и CLI. Но когда я запускаю его, я вижу следующую ошибку:

[30.09.2008 15:11:06] Функции не найдены. Попробуйте сделать ваши классы и методы работы публичными. Если вы используете связывающие расширения (например, ServiceBus, Timers и т. Д.), Убедитесь, что вы вызвали метод регистрации для расширения (ей) в своем коде запуска (например, config.UseServiceBus(), config.UseTimers() и т. Д..).

Ниже приведены время выполнения функции Azure и версия основного инструмента.

Основные инструменты функций Azure (2.0.3) Время выполнения функции Версия: 2.0.12115.0

Также я установил расширение служебной шины

Я также пытался установить расширение через CLI тоже. Следующее - это project.csproj:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <AzureFunctionsVersion>V2</AzureFunctionsVersion>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.ServiceBus" Version="3.0.0" />
    <PackageReference Include="Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator" Version="1.0.1" />
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.22" />
  </ItemGroup>
  <ItemGroup>
    <None Update="host.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="local.settings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <CopyToPublishDirectory>Never</CopyToPublishDirectory>
    </None>
  </ItemGroup>
</Project>

Примечание. Это стандартный шаблон, изменения не были внесены.

1 ответ

Решение
<PackageReference Include="Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator" Version="1.0.1" />

Пожалуйста, удалите ссылку на этот пакет и очистите проект, он был импортирован в Microsoft.NET.Sdk.Functions для развития VS. Импортируйте его снова, может вызвать ошибку сборки, как вы видели.

Обновить

Так как ты не видишь function.json боюсь, что в построенных активах что-то не так с Microsoft.NET.Sdk.Functions на вашей стороне, которая не в состоянии построить атрибут триггера в файле.cs для function.json, Мое предложение

  1. Удалить функцию SDK %userprofile%\.nuget\packages\microsoft.net.sdk.functions,
  2. Удалить функцию CLI используя VS %localappdata%\AzureFunctionsTools,
  3. Удалить шаблон двигателя, потребляемый VS %userprofile%\.templateengine,
  4. Перезапустите VS и создайте новый проект Function, в нижней части диалогового окна создания / шаблона см. Making sure all templates are up to date, Подождите, пока он не изменится на Updates are ready, введите описание изображения здесь введите описание изображения здесь
  5. Закройте это диалоговое окно и откройте его снова, потому что он может использовать старые шаблоны при первом его открытии.

На всякий случай, если вам нужно проверить, я использую шаблон триггера очереди служебной шины в VS. Код такой же, как и ниже,.csproj такой же, как и рассматриваемый без Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator,

    using Microsoft.Azure.WebJobs;
    using Microsoft.Azure.WebJobs.Host;
    using Microsoft.Extensions.Logging;

    namespace FunctionApp1
    {
        public static class Function1
        {
            [FunctionName("Function1")]
            public static void Run([ServiceBusTrigger("myqueue", Connection = "MyConnection")]string myQueueItem, ILogger log)
            {
                log.LogInformation($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
            }
        }
    }

И структура папок в [Functionproject]\bin\Debug\netstandard2.0,

введите описание изображения здесь

Другие вопросы по тегам