AWS Lambda和.NET Core – 使用Linux运行时?
我正在编写一个C#(.NET Core)的Alexa技能,可以从AWS Lambda函数(在Amazon Linux上运行)运行。 当我编译项目( dotnet发布 )时,我收到错误:
无法找到与其中一个目标运行时兼容的框架’.NETCoreApp,Version = v1.0’的运行时目标:’win10-x64,win81-x64,win8-x64,win7-x64’。 可能的原因:
- 项目尚未还原或还原失败 – 运行dotnet还原
- 该项目未在“运行时”部分列出“win10-x64,win81-x64,win8-x64,win7-x64”之一。
- 您可能正在尝试发布不受支持的库。 使用dotnet pack分发库。
如果我指定一个Windows运行时(例如win10-x64 ),它将编译正常,但是我的一个依赖项(Google表格API)在运行时由于基于Linux的Lambda而存在问题。 使用Linux运行时(例如debian.8-x64)将导致相同的编译错误。
当自己的平台是Linux时,为什么AWS SDK需要Windows运行时? 我觉得我错过了一些明显的东西,并且当有人将问题指出给我时,我会很高兴地面对掌心。
我的project.json文件(主应用程序和.NET Core类库项目):
AlexaProj
{ "version": "1.0.0-*", "buildOptions": { }, "dependencies": { "Microsoft.NETCore.App": "1.1.1", "Amazon.Lambda.Core": "1.0.0*", "Amazon.Lambda.Serialization.Json": "1.0.1", "Amazon.Lambda.Tools": { "type": "build", "version": "1.3.0-preview1" }, "Slight.Alexa.Core": "1.0.10-beta", "AlexaProjLib": "1.0.0-*" }, "tools": { "Amazon.Lambda.Tools": "1.3.0-preview1" }, "runtimes": { "win10-x64": { } <--- Compiles, but fails at runtime }, "frameworks": { "netcoreapp1.0": { "imports": "dnxcore50" } } }
AlexaProjLib
{ "version": "1.0.0-*", "dependencies": { "Google.Apis": "1.21.0", "Google.Apis.Core": "1.21.0", "Google.Apis.Oauth2.v2": "1.21.0.672", "Google.Apis.Sheets.v4": "1.21.0.798", "NETStandard.Library": "1.6.1" }, "frameworks": { "netstandard1.6": { "imports": "dnxcore50" } } }
我发现JeffRCorp在AWS论坛上发布了类似的问题 ,他们的步骤也适用于我。
首先,我编辑了project.json并将Microsoft.NETCore.App依赖项移动到框架部分(尽管我不确定这是否有所不同)。 我还删除了运行时部分。 最终的project.json:
{ "version": "1.0.0-*", "buildOptions": { }, "dependencies": { "Amazon.Lambda.Core": "1.0.0*", "Amazon.Lambda.Serialization.Json": "1.0.1", "Amazon.Lambda.Tools": { "type": "build", "version": "1.3.0-preview1" }, "Slight.Alexa.Core": "1.0.10-beta", "AlexaProjLib": "1.0.0-*" }, "tools": { "Amazon.Lambda.Tools": "1.3.0-preview1" }, "frameworks": { "netcoreapp1.0": { "imports": "dnxcore50", "dependencies": { "Microsoft.NETCore.App": { "type": "platform", "version": "1.1.1" } } } } }
然后我运行了dotnet lambda包 ,它在bin / Release / netcoreapp1.0目录中构建了一个.zip文件。 通过AWS控制台将其上传到AWS Lambda,瞧!
- 在ASP.NET Core MVC API控制器上对AuthorizeAttribute进行unit testing
- 将私钥/公钥从X509证书导出到PEM
- net462应用程序引用netstandard1.5库时出现“无法加载文件或程序集”错误。 但为什么?
- C#dependency injection运行时(动态)注册
- 在单独的项目Asp.net Core MVC中进行本地化
- NuGet.Config文件位于Visual Studio 2017项目中的哪个位置?
- 是否可以静默运行.NET Core控制台应用程序(隐藏控制台窗口)?
- .NET Core IServiceScopeFactory.CreateScope()vs IServiceProvider.CreateScope()扩展
- 如何在.NET Core中从流加载程序集