繁体   English   中英

如何从引用的nuget包中加载Azure活动功能

[英]How to load azure activity function from a referenced nuget package

我已经实现了Azure持久功能,如您所知,该功能包含我的业务流程 ,业务流程活动
关键是我的活动之一是在另一个程序集中实现的,我将其称为nuget程序包。
现在的问题是,当我在Visual Studio中运行我的解决方案时,所有由AzureFunctionsTools加载的Azure函数都没有列出,但未列出位于nuget包中的此活动,并且我遇到了以下错误消息:

错误: “ MyExternalActivity”不存在,被禁用或不是活动功能。 附加信息:以下是已知的活动功能:“ MyLocalActivity”。

这是我在nuget项目中的MyExternalActivity定义:

[FunctionName(FunctionName)]
public async Task<object> Run([ActivityTrigger] DurableActivityContextBase context) 
{
...
}

这是我的Orchestrator类:

[FunctionName(FunctionName)]
public static async Task RunOrchestrator([OrchestrationTrigger] DurableOrchestrationContextBase context, ILogger log)
 {
    ...
    await context.CallActivityAsync<object>("MyLocalActivity", parameters); // Successfull; code is in this solution
    ...   
    ...
    await context.CallActivityAsync<object>("MyExternalActivity" , parameters); // Error; Referenced by nuget package
    ...
}

注意:我试图删除引用并将nuget代码项目添加到相同的解决方案中,并直接通过该项目进行引用,但是发生了相同的错误

您遇到此问题的原因是因为调用其他函数与在其他项目或nuget包中调用方法并不相同。 它们是完全独立的实体,因此添加引用不会导致包含活动功能。

正确的实现方法是在一个项目中定义两个功能。 您绝对可以将函数定义作为外壳,然后调用nuget包中的代码。

[FunctionName(FunctionName)]
public async Task<object> Run([ActivityTrigger] DurableActivityContextBase context) 
{
    MethodFromNugetPackage(context);
}

如果要在不同项目中使用这些功能,则有两种选择:

1)在Azure中具有多个功能服务。

2)在关闭“删除目标中的其他文件”的情况下部署代码。 这假定您是从Visual Studio进行部署的,因此,如果使用其他部署方法,则需要查找并调整等价设置。 需要明确的是, 建议这样做,因为您可能会遇到难以跟踪的问题,但是应该可以解决。 在此处输入图片说明

暂无
暂无

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

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