繁体   English   中英

带有Azure Functions v2的IWebJobsStartup

[英]IWebJobsStartup with Azure Functions v2

我试图通过visual studio和CLI创建一个带有V2运行时的azure函数。 但是当我运行它时,我看到以下错误:

[9/30/2018 3:11:06 PM]找不到工作职能。 尝试公开您的工作类和方法。 如果您正在使用绑定扩展(例如ServiceBus,Timers等),请确保您已在启动代码中调用扩展的注册方法(例如config.UseServiceBus(),config.UseTimers()等)。

以下是azure函数运行时和核心工具版本

Azure Functions核心工具(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>

注意 - 这是开箱即用的模板,并未进行任何更改。

<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. 使用VS %localappdata%\\AzureFunctionsTools删除功能CLI。
  3. 删除VS %userprofile%\\.templateengine使用的模板引擎。
  4. 重新启动VS并创建一个新的Function项目,在创建/模板对话框的底部,请参阅Making sure all templates are up to date 等到它更改为Updates are ready 在此输入图像描述 在此输入图像描述
  5. 单击Refresh

为了防止您需要检查,我在VS中使用Service Bus队列触发器模板。 代码如下,.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的文件夹结构。

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM