Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
723 views
in Technique[技术] by (71.8m points)

c# - Could not load file or assembly Magick.Net on Elastic Beanstalk Deployment

I am getting the following error when deploying my project to 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.

I have many other DLLs in the bin folder, and this one the only one that throws this error. The DLL doesn't have any dependencies as far as I know.

I don't get this error when running locally and the dll is set to "Do not copy" in the advanced options, like the other DLLs.

I am running ASP.NET 4.5 / C# Project

Running dependency walker on the EC2 server of the Elastic Beanstalk I get:

enter image description here

How can I make this dll load when launching my project on Elastic Beanstalk?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

The specified module could not be found.

This normally implies that the module specified (Magick.NET-x86.DLL) isn't the issue, but rather a dependency of Magick.NET-x86.DLL cannot be found. Specifically, a non CLR based dependency.

The best way to determine native dependencies is with a dependency viewer. You can find one here: http://www.dependencywalker.com/

Open the Magick.NET-x86.DLL in the depends.exe program and look at the dependencies. If you can't do this on the amazon instance, you'll have to do it on your PC. Make sure that all dependencies are located, and exist within the same folder as the application .EXE

I did this with the following file downloaded from their website: Magick.NET-6.8.8.701-Q16-x64-net40-client

Based on the depencies I see when I do this, the most likely culprit is not having the C++ 2012 runtime. Note that this runtime is for the latest 64bit DLL i downloaded from their website. If you are using an older version it may be a different runtime.

To find out the correct runtime, google the c++ DLL name. E.g. MSVCP110.dll == 2012

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

56.8k users

...