.Net Core(2.1)-Lambda函数可以正常工作,而在2.2中却不能工作吗?

时间:2019-06-16 14:44:06

标签: c# amazon-web-services .net-core aws-lambda

我已经使用.Net Core 2.1创建了一个简单的空AWS Lambda函数:

enter image description here

这是文件夹结构:

enter image description here

(这里是csproj

还有一个FunctionHandler,它获取DI并调用一些虚拟方法:

enter image description here

现在让我们运行“模拟Lambda测试工具”,我们可以看到它有效:

enter image description here

那问题出在哪里?

我已经读过here,它支持2.2:

  

这意味着您现在可以使用.NET Core 2.2和更高版本编写Lambda函数。   .NET Core 3.0预览。 Amazon.Lambda.RuntimeSupport可作为   GitHub上的源代码,或作为NuGet包。

因此,我创建了一个新的空的lambda项目,但带有2.2:

enter image description here

相同的代码。但是现在当我运行“ Mock Lambda测试工具”时,出现了一个错误:

  

AWS .NET Mock Lambda测试工具(0.9.2)发生未知错误,导致   进程退出:无法在以下位置找到deps.json文件   Amazon.Lambda.TestTool.Runtime.LocalLambdaRuntime.Initialize(字符串   目录)中   E:\ JenkinsWorkspaces \ Lam \ LambdaSandboxCoreCLRApi \ Tools \ LambdaTestTool \ Amazon.Lambda.TestTool \ Runtime \ LocalLambdaRuntime.cs:line   在Amazon.Lambda.TestTool.Program.Main(String [] args)中的50   E:\ JenkinsWorkspaces \ Lam \ LambdaSandboxCoreCLRApi \ Tools \ LambdaTestTool \ Amazon.Lambda.TestTool \ Program.cs:line   46按任意键退出

这是错误:

enter image description here

问题:

那是为什么?我在2.1中没有任何deps.json文件。

那么为什么在2.2中需要它? 另外,此路径在错误中显示的是什么:E:\JenkinsWorkspaces ...? 我没有詹金斯,也没有类似的东西。

1 个答案:

答案 0 :(得分:4)

好吧,我已经找到了原因(我不知道为什么发生在第一位),但这是事实。忍受我。

当我创建一个2.1 lambda项目时,一切正常。 (显然)

问题出在2.2项目上(针对2.2和2.2的nuget)。 (它显示了我在问题中显示的错误)

那么我想,如果我创建一个2.1项目,然后更新(!)它的nuget并将目标更改为2.2怎么办? .........有效!

这真的很奇怪。因为我希望不会。

所以我想,让我们比较一下2.2项目(无效)的文件系统和2.1项目(已更新为2.2项目(有效)的项目)。

在右边是严格的2.2项目(无更新),在左边是已更新为2.2的项目:

enter image description here

我注意到一些.Net core 2.1文件正在升级中,但没有在严格的2.2版本中,所以我想,我该如何获取那些丢失的文件?

enter image description here

所以我已经(暂时)将项目目标更改为2.1:

enter image description here

然后我运行了构建

这导致显示2.1文件夹的文件:

enter image description here

现在.............一切正常! :

enter image description here