具有Azure Functions v2的IWebJobsStartup

时间:2018-09-30 15:24:48

标签: azure azure-functions azure-functions-runtime azure-functions-core-tools

我试图通过Visual Studio和CLI在V2运行时中创建一个Azure函数。但是当我运行它时,我看到以下错误:

  

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

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

Azure Functions核心工具(2.0.3) 函数运行时版本:2.0.12115.0

我还安装了服务总线扩展

enter image description here

我也尝试过通过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 个答案:

答案 0 :(得分:2)

<PackageReference Include="Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator" Version="1.0.1" />

请删除此软件包参考并清理项目,该项目已导入Microsoft.NET.Sdk.Functions中以进行VS开发。再次导入可能会导致构建错误,如您所见。

更新

由于您看不到已建资产中的function.json,因此您担心Microsoft.NET.Sdk.Functions出问题了,这无法将.cs文件中的触发器属性构建为{{1} }。我的建议是

  1. 删除功能SDK function.json
  2. 使用VS %userprofile%\.nuget\packages\microsoft.net.sdk.functions删除功能CLI。
  3. 删除VS %localappdata%\AzureFunctionsTools使用的模板引擎。
  4. 重新启动VS并创建一个新的Function项目,位于创建/模板对话框的底部,请参见%userprofile%\.templateengine。等待,直到其更改为Making sure all templates are up to dateenter image description here enter image description here
  5. 点击Updates are ready

为了防万一,请在VS中使用服务总线队列触发器模板。代码如下,.csproj与没有Refresh的代码相同。

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}"); } } } 中的文件夹结构。

enter image description here