Chr*_*ini 5 imagemagick.net magick.net
升级到最新的ImageMagick/Magick.NET(7.0.2.901),它在本地构建并运行良好,但在服务器上出现此错误.
无法在DLL'Magick.NET-Q8-x64.Native.dll'中找到名为"Environment_SetEnv"的入口点.
似乎是一个新问题.从这里的变化来看:
https://magick.codeplex.com/discussions/650746
不再需要VC运行时,因此安装它们不会成为问题 - 而且,我已经为库的先前版本安装了2008年,2012年和2015年的VC运行时,这些工作正常.
IIS中的Windows Server 2008 64位,64位.Net 4.
当前的解决方法是回滚到7.0.0.22,它运行没有错误.
Install-Package Magick.NET-Q8-AnyCPU -Version 7.0.0.22
Run Code Online (Sandbox Code Playgroud)
几个月前我遇到了这个问题,最终发现了两个不同的原因:
AnyCPU与先前版本冲突
问题:Magick.NET将本机库缓存在临时目录中,除非它已经存在(相关源代码).由于我之前已经使用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
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
1219 次 |
| 最近记录: |