【发布时间】:2019-06-16 14:44:06
【问题描述】:
我使用 .Net Core 2.1 创建了一个简单的空 AWS Lambda 函数:
这是文件夹结构:
(这里是csproj)
还有一个 FunctionHandler 获取 DI 并调用一些虚拟方法:
现在让我们运行“Mock Lambda 测试工具”,我们可以看到它有效:
那么问题出在哪里?
我读过here 支持 2.2:
这意味着您现在可以使用 .NET Core 2.2 和 .NET Core 3.0 预览版。 Amazon.Lambda.RuntimeSupport 可用作 GitHub 上的源代码,或作为 NuGet 包。
所以,我创建了一个新的空 lambda 项目,但使用的是 2.2:
- Here are the changes in the CSPROJ file
- And here are the changes in the aws-lambda-tools-defaults.json file
相同的代码。但是现在当我运行“Mock Lambda Test Tool”时,我得到一个错误:
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 50 在 Amazon.Lambda.TestTool.Program.Main(String[] args) 中 E:\JenkinsWorkspaces\Lam\LambdaSandboxCoreCLRApi\Tools\LambdaTestTool\Amazon.Lambda.TestTool\Program.cs:line 46 按任意键退出
这是错误:
问题:
这是为什么呢?我在 2.1 中没有任何 deps.json 文件。
那么为什么我在 2.2 中需要它?
另外,错误中出现的这条路径是什么:E:\JenkinsWorkspaces...?
我没有 Jenkins 也没有类似的东西。
【问题讨论】:
-
你发布时是否有你的 deps.json 文件,它是否会(被复制)到亚马逊?
-
@IlyaChernomordik 我还没有发布。我正处于在 Visual Studio 中运行模拟测试工具的阶段。在 2.1 中它确实有效,但在 2.2 中它没有。 (意思是我可以在 2.1 项目中运行测试工具,但不能在 2.2 中)i.imgur.com/Jd0VjSF.jpg,这是错误i.imgur.com/PLmA7cq.jpg
-
stackoverflow.com/questions/46622113/…,为什么你之前没有,我不确定
-
@IlyaChernomordik 它确实存在于发布文件夹中。但同样,我没有发布。我正在运行 Mock Lambda 测试工具。假设显示 chrome 。当我有一个 2.1 项目时,一切都很好,正如我所展示的。但是当我创建一个 2.2 项目(不是 2.1)时,它会显示一个错误。
-
可能与此文件的路径或位置有关,也许 lambda 测试工具在运行时指向不同的目录。尝试比较实际运行位置(您可以使用 procexp 检查,例如在 Windows 上或其他方式)。我的意思是检查 .netcore 在 2.1 和 2.2 的哪个位置运行哪个 dll,并检查两个中的 deps.json
标签: c# amazon-web-services .net-core aws-lambda