我使用了Magick.NET,这是ImageMagick的.NET封装器,在客户端机器上出现了上述错误。但在我的机器上却可以正常工作。因为我没有安装ImageMagick,所以我无法理解我需要在客户端机器上做什么。我已经安装了VS 2012。
此外,Magick.NET包含了ImageMagick,我认为它使用了C++/CLI,并将本地的ImageMagick接口暴露给.NET,全部在一个单独的DLL中。那么它需要哪个DLL呢?
(我刚刚遇到这个错误,所以贴出我找到的解决方案。)
我使用了Magick.NET,这是ImageMagick的.NET封装器,在客户端机器上出现了上述错误。但在我的机器上却可以正常工作。因为我没有安装ImageMagick,所以我无法理解我需要在客户端机器上做什么。我已经安装了VS 2012。
此外,Magick.NET包含了ImageMagick,我认为它使用了C++/CLI,并将本地的ImageMagick接口暴露给.NET,全部在一个单独的DLL中。那么它需要哪个DLL呢?
(我刚刚遇到这个错误,所以贴出我找到的解决方案。)
Magick.NET需要安装VC 2012 Runtime,而Magick.NET V7+ (.NET 4.0)需要安装2012和VC 2015 Runtime。请在客户端计算机上下载并安装。如果弹出“修复或卸载”对话框,则已经安装,并且您可能缺少其他依赖项。否则,请安装VCR并重新启动应用程序。
我需要做的另一件事情是在IIS应用程序池的高级设置中启用32位应用程序。
我出现了错误
System.TypeInitializationException: The type initializer for 'X86' threw an exception. --->
System.DllNotFoundException: Unable to load DLL 'Magick.NET-Q16-x86.Native.dll': Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
通过设置 应用程序池 -> 高级设置 -> 启用 32 位 = false 来修复问题。