.net core 当DurableTask nuget包升级到2.0.0版时,找不到Azure持久功能编排客户端

.net core 当DurableTask nuget包升级到2.0.0版时,找不到Azure持久功能编排客户端,.net-core,azure-functions,azure-durable-functions,.net Core,Azure Functions,Azure Durable Functions,将队列触发函数定义为以下示例: public async Task OrchestratorAsync( [QueueTrigger("my-queue", Connection = "")]string payload, [OrchestrationClient] DurableOrchestrationClient orchestrationClient) { //Do something

将队列触发函数定义为以下示例:

public async Task OrchestratorAsync(
            [QueueTrigger("my-queue", Connection = "")]string payload,
            [OrchestrationClient] DurableOrchestrationClient orchestrationClient)
        {
            //Do something
        }
csproj文件的详细信息如下所示,并已成功编译:


<PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <AzureFunctionsVersion>v2</AzureFunctionsVersion>
    <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.DurableTask" Version="1.8.2" />
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.Storage" Version="3.0.10" />
    <PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.0.0" />
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.29" />
  </ItemGroup>
</project>

netcoreapp2.2
v2
符合事实的
当我将Microsoft.Azure.WebJobs.Extensions.DurableTask升级到2.0.0版时,编译器会在找不到OrchestrationClient和DurableCorchestrationClient时抛出错误。所以我们只能使用1.8.2版!这个问题的解决方案是什么


注:到2019年,该版本完全可以复制。让它构建一个函数项目,创建另一个函数作为持久的编排器,调整csproj文件,并将DurableTask nuget包版本从默认的1.8.2升级到2.0.0。

我重现了您的错误,解决了这个问题

using System.Collections.Generic;
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.DurableTask;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;

namespace _11111fc
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static async Task<List<string>> RunOrchestrator(
            [OrchestrationTrigger] IDurableOrchestrationContext context,
            [DurableClient] IDurableOrchestrationClient orchestrationClient)
        {
            var outputs = new List<string>();

            // Replace "hello" with the name of your Durable Activity Function.
            outputs.Add(await context.CallActivityAsync<string>("Function1_Hello", "Tokyo"));
            outputs.Add(await context.CallActivityAsync<string>("Function1_Hello", "Seattle"));
            outputs.Add(await context.CallActivityAsync<string>("Function1_Hello", "London"));

            // returns ["Hello Tokyo!", "Hello Seattle!", "Hello London!"]
            return outputs;
        }

        [FunctionName("Function1_Hello")]
        public static string SayHello([ActivityTrigger] string name, ILogger log)
        {
            log.LogInformation($"Saying hello to {name}.");
            return $"Hello {name}!";
        }

        [FunctionName("Function1_HttpStart")]
        public static async Task<HttpResponseMessage> HttpStart(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")]HttpRequestMessage req,
            [DurableClient]IDurableOrchestrationClient starter,
            ILogger log)
        {
            // Function input comes from the request content.
            string instanceId = await starter.StartNewAsync("Function1", null);

            log.LogInformation($"Started orchestration with ID = '{instanceId}'.");

            return starter.CreateCheckStatusResponse(req, instanceId);
        }
    }
}
使用System.Collections.Generic;
使用System.Net.Http;
使用System.Threading.Tasks;
使用Microsoft.Azure.WebJobs;
使用Microsoft.Azure.WebJobs.Extensions.DurableTask;
使用Microsoft.Azure.WebJobs.Extensions.Http;
使用Microsoft.Azure.WebJobs.Host;
使用Microsoft.Extensions.Logging;
命名空间11111 fc
{
公共静态类函数1
{
[功能名称(“功能1”)]
公共静态异步任务RunOrchestrator(
[OrchestrationTrigger]IDurableOrchestrationContext上下文,
[DurableClient]IDurableOrchestrationClient业务流程客户端)
{
变量输出=新列表();
//将“hello”替换为持久活动函数的名称。
Add(wait context.CallActivityAsync(“Function1_Hello”,“Tokyo”);
Add(wait context.CallActivityAsync(“Function1_Hello”,“西雅图”);
Add(wait context.CallActivityAsync(“Function1_Hello”,“London”));
//返回[“你好东京!”、“你好西雅图!”、“你好伦敦!”]
返回输出;
}
[FunctionName(“Function1_Hello”)]
公共静态字符串SayHello([ActivityTrigger]字符串名称,ILogger日志)
{
log.LogInformation($“向{name}打招呼”);
return$“Hello{name}!”;
}
[FunctionName(“Function1\u HttpStart”)]
公共静态异步任务HttpStart(
[HttpTrigger(AuthorizationLevel.Anonymous,“获取”、“发布”)]HttpRequestMessage请求,
[DurableClient]IdurableCorchestrationClient启动器,
ILogger日志)
{
//函数输入来自请求内容。
字符串instanceId=await starter.StartNewAsync(“Function1”,null);
LogInformation($“启动了ID为“{instanceId}”的业务流程”;
返回starter.CreateCheckStatusResponse(请求,实例ID);
}
}
}
解决方案:

将[OrchestrationClient]更改为[DurableClient]。看一看。 请注意
持久功能v2.0.0-beta2版本
中的重大更改,
编排客户端
已重命名


对我来说一切都很顺利。请您试一试。

我重现了您的错误,解决了这个问题

using System.Collections.Generic;
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.DurableTask;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;

namespace _11111fc
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static async Task<List<string>> RunOrchestrator(
            [OrchestrationTrigger] IDurableOrchestrationContext context,
            [DurableClient] IDurableOrchestrationClient orchestrationClient)
        {
            var outputs = new List<string>();

            // Replace "hello" with the name of your Durable Activity Function.
            outputs.Add(await context.CallActivityAsync<string>("Function1_Hello", "Tokyo"));
            outputs.Add(await context.CallActivityAsync<string>("Function1_Hello", "Seattle"));
            outputs.Add(await context.CallActivityAsync<string>("Function1_Hello", "London"));

            // returns ["Hello Tokyo!", "Hello Seattle!", "Hello London!"]
            return outputs;
        }

        [FunctionName("Function1_Hello")]
        public static string SayHello([ActivityTrigger] string name, ILogger log)
        {
            log.LogInformation($"Saying hello to {name}.");
            return $"Hello {name}!";
        }

        [FunctionName("Function1_HttpStart")]
        public static async Task<HttpResponseMessage> HttpStart(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")]HttpRequestMessage req,
            [DurableClient]IDurableOrchestrationClient starter,
            ILogger log)
        {
            // Function input comes from the request content.
            string instanceId = await starter.StartNewAsync("Function1", null);

            log.LogInformation($"Started orchestration with ID = '{instanceId}'.");

            return starter.CreateCheckStatusResponse(req, instanceId);
        }
    }
}
使用System.Collections.Generic;
使用System.Net.Http;
使用System.Threading.Tasks;
使用Microsoft.Azure.WebJobs;
使用Microsoft.Azure.WebJobs.Extensions.DurableTask;
使用Microsoft.Azure.WebJobs.Extensions.Http;
使用Microsoft.Azure.WebJobs.Host;
使用Microsoft.Extensions.Logging;
命名空间11111 fc
{
公共静态类函数1
{
[功能名称(“功能1”)]
公共静态异步任务RunOrchestrator(
[OrchestrationTrigger]IDurableOrchestrationContext上下文,
[DurableClient]IDurableOrchestrationClient业务流程客户端)
{
变量输出=新列表();
//将“hello”替换为持久活动函数的名称。
Add(wait context.CallActivityAsync(“Function1_Hello”,“Tokyo”);
Add(wait context.CallActivityAsync(“Function1_Hello”,“西雅图”);
Add(wait context.CallActivityAsync(“Function1_Hello”,“London”));
//返回[“你好东京!”、“你好西雅图!”、“你好伦敦!”]
返回输出;
}
[FunctionName(“Function1_Hello”)]
公共静态字符串SayHello([ActivityTrigger]字符串名称,ILogger日志)
{
log.LogInformation($“向{name}打招呼”);
return$“Hello{name}!”;
}
[FunctionName(“Function1\u HttpStart”)]
公共静态异步任务HttpStart(
[HttpTrigger(AuthorizationLevel.Anonymous,“获取”、“发布”)]HttpRequestMessage请求,
[DurableClient]IdurableCorchestrationClient启动器,
ILogger日志)
{
//函数输入来自请求内容。
字符串instanceId=await starter.StartNewAsync(“Function1”,null);
LogInformation($“启动了ID为“{instanceId}”的业务流程”;
返回starter.CreateCheckStatusResponse(请求,实例ID);
}
}
}
解决方案:

将[OrchestrationClient]更改为[DurableClient]。看一看。 请注意
持久功能v2.0.0-beta2版本
中的重大更改,
编排客户端
已重命名

对我来说一切都很顺利。请在你这边试一试