.NET AWS Lambda依赖项不发布

时间:2018-03-20 01:58:22

标签: c# amazon-web-services aws-lambda

我有两个解决方案:

  • 一个只有一个.NET核心2.0 lambda项目
  • 另一个有多个.NET 4.5类库项目的人。

我希望在4.5类库中实现我的lambda方法实现,以便这些函数可以在整个企业中使用,而不仅仅是Lambda函数。但是,当我构建我的lambda项目并从VS 2017发布它时,它会压缩,打包并发布它的直接依赖关系 4.5程序集的依赖关系,但是没有一个4.5程序集&#39 ; s依赖项可用。

例如,我的一个4.5项目有一个使用HtmlAgilityPack的类库。当我从VS 2017发布时,我可以看到正在压缩发布的程序集:

Zipping publish folder C:\Data\Dev\MyProject\bin\Release\netcoreapp2.0\publish to C:\Data\Dev\MyProject\bin\Release\netcoreapp2.0\Lambda1.zip
... zipping: Amazon.Lambda.Core.dll
... zipping: Amazon.Lambda.Serialization.Json.dll
... zipping: AWSSDK.Core.dll
... zipping: AWSSDK.Lambda.dll
... zipping: Elasticsearch.Net.dll
... zipping: EntityFramework.dll
... zipping: HtmlAgilityPack.dll

我可以在...bin\Release\netcoreapp2.0\publish文件夹和MyProject.zip包中看到程序集。但是当我测试我的lambda时,我得到以下结果:

    {
  "errorType": "FileNotFoundException",
  "errorMessage": "Could not load file or assembly 'HtmlAgilityPack, Version=1.4.0.0, 
Culture=neutral, PublicKeyToken=bd319b19eaf3b43a'. The system cannot find the file specified

如果我直接将Ht​​mlAgilityPack引用添加到我的Lambda项目,构建和发布,问题就会消失。我不明白为什么文件在部署包中明显不可用时。它就像"中学"引用,4.5类库中的引用,根本不可用,这使得我想避免使用一些紧密耦合的代码。我错过了什么?

1 个答案:

答案 0 :(得分:0)

this question 的答案基本上回答了这个问题:您可以使用NuGet包而不是相对引用来确保Lambda项目知道所有传递依赖项。我真正的问题是,我在4.5项目中的许多次要依赖项与.NET Core 2.0不兼容,这是一个完全不同的问题。