繁体   English   中英

AWS Lambda和.NET Core-使用Linux运行时吗?

[英]AWS Lambda and .NET Core - Using a Linux Runtime?

我正在用C#(。NET Core)编写Alexa技能,以便从AWS Lambda函数(在Amazon Linux上运行)运行。 当我编译项目( dotnet publish )时,出现错误:

找不到与目标运行时之一兼容的框架“ .NETCoreApp,Version = v1.0”的运行时目标:“ win10-x64,win81-x64,win8-x64,win7-x64”。 可能的原因:

  1. 项目尚未还原或还原失败-运行dotnet restore
  2. 该项目未在“运行时”部分列出“ win10-x64,win81-x64,win8-x64,win7-x64”之一。
  3. 您可能正在尝试发布不支持的库。 使用dotnet pack分发库。

如果我指定Windows运行时(例如win10-x64 ),它将可以正常编译,但是我的一个依赖项(Google Sheets API)由于位于基于Linux的Lambda上而在运行时出现问题。 使用Linux运行时(例如debian.8-x64)将导致相同的编译错误。

当其自身的平台是Linux时,为什么AWS开发工具包需要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,瞧!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM