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