我已经使用.Net Core 2.1创建了一个简单的空AWS Lambda函数:
这是文件夹结构:
(这里是csproj)
还有一个FunctionHandler,它获取DI并调用一些虚拟方法:
现在让我们运行“模拟Lambda测试工具”,我们可以看到它有效:
那问题出在哪里?
我已经读过here,它支持2.2:
这意味着您现在可以使用.NET Core 2.2和更高版本编写Lambda函数。 .NET Core 3.0预览。 Amazon.Lambda.RuntimeSupport可作为 GitHub上的源代码,或作为NuGet包。
因此,我创建了一个新的空的lambda项目,但带有2.2:
相同的代码。但是现在当我运行“ 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按任意键退出
这是错误:
问题:
那是为什么?我在2.1中没有任何deps.json
文件。
那么为什么在2.2中需要它?
另外,此路径在错误中显示的是什么:E:\JenkinsWorkspaces
...?
我没有詹金斯,也没有类似的东西。
答案 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的项目:
我注意到一些.Net core 2.1文件正在升级中,但没有在严格的2.2版本中,所以我想,我该如何获取那些丢失的文件?
所以我已经(暂时)将项目目标更改为2.1:
然后我运行了构建
这导致显示2.1文件夹的文件:
现在.............一切正常! :