升级到最新的ImageMagick / Magick.NET(7.0.2.901),它在本地构建并运行良好,但在服务器上出现此错误。
无法找到名为' Environment_SetEnv'的入口点在DLL' Magick.NET-Q8-x64.Native.dll'。
似乎是一个新问题。从这里的变化来看:
https://magick.codeplex.com/discussions/650746
不再需要VC运行时,因此安装它们不会成为问题 - 并且,我已经为该库的先前版本安装了2008年,2012年和2015年的VC运行时,运行良好。 / p>
IIS中的Windows Server 2008 64位,64位.Net 4。
目前的解决方法是回滚到7.0.0.22,运行时没有错误。
Install-Package Magick.NET-Q8-AnyCPU -Version 7.0.0.22
答案 0 :(得分:5)
几个月前我遇到了这个问题,最终找到了两个不同的原因:
AnyCPU与先前版本冲突
问题:Magick.NET将本机库缓存在临时目录中,除非它已经存在(Relevant source code)。由于我之前已使用Q8-x64版本进行了测试(它没有测试CPU架构),Magick.NET-Q8-x64.Native.dll
已经存在且未被覆盖。
解决方法:删除本机库的临时目录。在我的Windows版本上,它位于%TEMP%\Magick.NET.{TargetFramework}.{MagickNETVersion}
。然后,Q8-AnyCPU版本使用Environment_SetEnv方法提取了一个新的本机库。
缓存目录中缺少权限
问题:本机库缓存在具有执行代码的限制权限的目录中。
解决方法:更改缓存目录的位置。我的解决方案是以下代码。
#if DEBUG
private static bool MagickCacheDirectoryIsSet = false;
public DefaultConstructor()
{
if (!MagickCacheDirectoryIsSet)
{
ImageMagick.MagickAnyCPU.CacheDirectory = @"path\to\more\permissive\directory";
MagickCacheDirectoryIsSet = true;
}
}
#endif
答案 1 :(得分:0)
有同样的问题,从bin文件夹中删除所有magick dll并重新安装解决了它。
答案 2 :(得分:0)
请按照以下步骤操作:
转到NuGet软件包管理器以获取解决方案(不是项目)
卸载任何以前的Magick.net版本
将Magick.net的新版本安装到所需项目中
转到主项目的bin
文件夹并删除任何 magick.net文件
运行您的解决方案
我已在VS2017和Magick.net 7.6.1(先前的安装为7.4.4)上成功测试了此方法