IWebJobsStartup с функциями Azure версии 2

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

[30.09.2018 15:11:06] Должностей не найдено. Попробуйте сделать свои классы и методы работы общедоступными. Если вы используете расширения привязки (например, ServiceBus, таймеры и т. Д.), Убедитесь, что вы вызвали метод регистрации для расширений в коде запуска (например, 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>

Примечание. Это готовый шаблон, никаких изменений в него не вносилось.


person Gurpreet Singh    schedule 30.09.2018    source источник


Ответы (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 и создайте новый проект функции в нижней части диалогового окна создания / шаблона, см. Making sure all templates are up to date. Подождите, пока он не изменится на Updates are ready. введите здесь описание изображения  введите описание изображения здесь
  5. Щелкните Refresh.

На всякий случай я использую шаблон триггера очереди служебной шины в 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.

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

person Jerry Liu    schedule 01.10.2018
comment
Спасибо @Jerry Liu. Но проблема все еще остается, так как я все еще вижу ту же ошибку, когда запускаю функцию - person Gurpreet Singh; 01.10.2018
comment
@GurpreetSingh Извините за мое упущение, вам также необходимо сначала очистить свой проект. - person Jerry Liu; 01.10.2018
comment
да. Я сделал чистку, а затем построил ее снова. Тоже пробовал в режиме релиза. Это та же проблема. - person Gurpreet Singh; 01.10.2018
comment
@GurpreetSingh Похоже, вы генерируете шаблон с помощью CLI, верно? Вы пробовали создать его напрямую с помощью VS? Вам необходимо установить это расширение. - person Jerry Liu; 01.10.2018
comment
Извинения. Как упоминалось в моем вопросе, я пробовал оба. VS и CLI я также выполнил шаги, упомянутые для регистрации расширений. Дайте мне знать, если вам нужно, чтобы я поделился образцом - person Gurpreet Singh; 01.10.2018
comment
@GurpreetSingh Хм .. Я создал триггер очереди служебной шины, используя как VS, так и CLI, работает без изменений, кроме добавления строк подключения. Проверьте, есть ли function.json в папке, названной в честь вашей функции, в папке [Functionproject] \ bin \ Debug \ netstandard2.0. - person Jerry Liu; 01.10.2018
comment
Пожалуйста, поделитесь созданным вами проектом и нет, function.json отсутствует. Я вижу здесь только библиотеки DLL, включая host.json и local.settings.json. - person Gurpreet Singh; 01.10.2018
comment
@GurpreetSingh Посмотрите, работает ли мое обновление для вас, извините, что я не могу воспроизвести вашу проблему, поэтому мое предложение может быть бесполезным. - person Jerry Liu; 01.10.2018
comment
Очистка этих папок, похоже, решила проблему. - person Gurpreet Singh; 01.10.2018