我有两个解决方案:
我希望在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
如果我直接将HtmlAgilityPack引用添加到我的Lambda项目,构建和发布,问题就会消失。我不明白为什么文件在部署包中明显不可用时。它就像"中学"引用,4.5类库中的引用,根本不可用,这使得我想避免使用一些紧密耦合的代码。我错过了什么?
答案 0 :(得分:0)
this question 的答案基本上回答了这个问题:您可以使用NuGet包而不是相对引用来确保Lambda项目知道所有传递依赖项。我真正的问题是,我在4.5项目中的许多次要依赖项与.NET Core 2.0不兼容,这是一个完全不同的问题。