无法在Elastic Beanstalk部署上加载文件或程序集Magick.Net

时间:2014-03-07 21:00:39

标签: c# .net dll elastic-beanstalk magicknet

将项目部署到Amazon Elastic Beanstalk时出现以下错误:

Could not load file or assembly 'Magick.NET-x86.DLL' or one of its dependencies. The specified module could not be found.

我在bin文件夹中有很多其他的DLL,而且这是唯一一个抛出此错误的DLL。据我所知,DLL没有任何依赖关系。

我在本地运行时没有收到此错误,并且在高级选项中将dll设置为“不复制”,就像其他DLL一样。

我正在运行ASP.NET 4.5 / C#Project

在Elastic Beanstalk的EC2服务器上运行依赖性walker我得到:

enter image description here

如何在Elastic Beanstalk上启动项目时加载此dll?

3 个答案:

答案 0 :(得分:5)

The specified module could not be found.

这通常意味着指定的模块(Magick.NET-x86.DLL)不是问题,而是找不到Magick.NET-x86.DLL的依赖项。特别是,基于非CLR的依赖。

确定本机依赖关系的最佳方法是使用依赖关系查看器。你可以在这里找到一个:http://www.dependencywalker.com/

在depends.exe程序中打开Magick.NET-x86.DLL并查看依赖项。如果您无法在亚马逊实例上执行此操作,则必须在PC上执行此操作。确保所有依赖项都已找到,并且与应用程序.EXE

位于同一文件夹中

我使用从他们的网站下载的以下文件做到了这一点:Magick.NET-6.8.8.701-Q16-x64-net40-client

基于我在执行此操作时看到的依赖关系,最可能的罪魁祸首是没有C ++ 2012运行时。请注意,此运行时适用于从其网站下载的最新64位DLL。如果您使用的是旧版本,则可能是不同的运行时。

要找出正确的运行时,请输入c ++ DLL名称。例如。 MSVCP110.dll == 2012

http://www.microsoft.com/en-us/download/details.aspx?id=30679

答案 1 :(得分:3)

Magick.NET需要安装VC 2012 Runtime。 (Visual Studio 2012的Visual C ++ Redistributable)

一旦在服务器上安装了Visual Studio 2012的Visual C ++ Redistributable,就需要重新启动。

答案 2 :(得分:1)

您可以使用.ebextensions配置文件自动安装所需的软件包,如上所述here