簡體   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