【问题标题】:AWS Lambda and .NET Core - Using a Linux Runtime?AWS Lambda 和 .NET Core - 使用 Linux 运行时?
【发布时间】:2017-08-09 15:47:15
【问题描述】:

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

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

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

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

当 AWS 开发工具包自己的平台是 Linux 时,为什么它需要 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"
    }
  }
}

【问题讨论】:

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


    【解决方案1】:

    我找到了JeffRCorp posted on the AWS forums about having a similar issue,他们的步骤也对我有用。

    首先我编辑了 project.json 并将 Microsoft.NETCore.App 依赖项移到 frameworks 部分(虽然我不确定如果这有所作为)。我还删除了 runtimes 部分。最终项目.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,瞧!

    【讨论】:

      猜你喜欢
      • 2018-04-02
      • 2017-08-01
      • 2019-11-19
      • 2018-05-19
      • 2020-06-04
      • 2018-01-07
      • 1970-01-01
      • 2019-10-04
      • 1970-01-01
      相关资源
      最近更新 更多