将项目部署到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我得到:
如何在Elastic Beanstalk上启动项目时加载此dll?
答案 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