【问题标题】:c# aws lambda dll reference issuesc# aws lambda dll 参考问题
【发布时间】:2018-05-13 11:46:48
【问题描述】:

我正在尝试从 vs2017 发布一个图像大小调整 aws lambda 函数(用 c# 为 .net core v1.0 编写)。我已经尝试了几个与 .net 核心(Magick.net 和 SkiaSharp)兼容的第三方库。但是,在执行该函数时,我遇到了 System.DllNotFoundException,说找不到库的 DLL。起初,我认为我的问题特定于正在使用的库,但无论使用什么库,我都会收到此错误。

有什么想法吗?也许我需要在 Visual Studio 中做一些特别的事情才能让 dll 上传到亚马逊?

示例错误:System.DllNotFoundException:无法加载 DLL 'libSkiaSharp':找不到指定的模块。

如果我不能为 c# aws lambda 函数使用第三方图像大小调整库,那么是否有可用的 .net 核心调整大小功能(因为 system.drawing 仅在 Windows 上可用,而 aws 在 linux 上运行)

我在第一次使用引用的 DLL 中的函数时遇到错误。 SkiaSharp 示例:

using SkiaSharp;

using (var objectResponse = await S3Client.GetObjectAsync(s3Event.Bucket.Name, s3Event.Object.Key))
{
   // THROWS THE DLL FOUND FOUND EXCEPTION
   using (var original = SKBitmap.Decode(objectResponse.ResponseStream))  
   {
   }
}

【问题讨论】:

  • 请出示相关代码
  • var original = SKBitmap.Decode(objectResponse.ResponseStream)) // 抛出 DLL 发现异常
  • 感谢 Ash,但请编辑您的问题并在此处添加代码以便所有人清楚地看到
  • 访问 DLL 有很多方法会出错...一旦你用代码(以及你的 Import 语句,如果适用)来表达你的问题 - 答案就会出现
  • 谢谢,我用我的代码的 sn-p 编辑了这个问题。

标签: c# amazon-web-services lambda visual-studio-2017


【解决方案1】:

我实际上自己解决了这个问题。我现在不是直接引用 SkiaSharp 库,而是为其引用一个 linux 包装器 (https://www.nuget.org/packages/Avalonia.Skia.Linux.Natives) 现在 dll 与部署包捆绑在一起

【讨论】:

  • 太棒了!那成功了。对于每个人来说,这就是让 SkiaSharp 在 AWS Lambda 中工作的方式。正如他所说,不要安装SkiaSharp NuGet 包,而是安装Avalonia.Skia.Linux.Natives NuGet 包。这包括您在 AWS Lambda 中使用 SkiaSharp 所需的一切。
猜你喜欢
  • 1970-01-01
  • 2010-10-30
  • 2012-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-21
  • 2016-08-27
  • 1970-01-01
相关资源
最近更新 更多