Не удалось найти точку входа с именем "Environment_SetEnv" в DLL "Magick.NET-Q8-x64.Native.dll"
Обновлен до последней версии ImageMagick / Magick.NET (7.0.2.901), и он собран и работает нормально локально, но с этой ошибкой взрывается на сервере.
Не удалось найти точку входа с именем "Environment_SetEnv" в DLL "Magick.NET-Q8-x64.Native.dll".
Кажется, это новый вопрос. Судя по изменению desc здесь:
https://magick.codeplex.com/discussions/650746
Среды выполнения VC больше не требуются, поэтому их установка не будет проблемой, и я установил среды выполнения VC 2008, 2012 и 2015 для предыдущих версий библиотеки, которые работали нормально.
Windows Server 2008 64-разрядная, 64-разрядная.Net 4 в IIS.
Текущий обходной путь - откат до 7.0.0.22, который работает без ошибок.
Install-Package Magick.NET-Q8-AnyCPU -Version 7.0.0.22
3 ответа
У меня была эта проблема пару месяцев назад, и в итоге я нашел две разные причины:
Конфликт AnyCPU с предыдущими версиями
Проблема: Magick.NET кэширует собственную библиотеку во временном каталоге, если она еще не существует ( Соответствующий исходный код). Так как я ранее тестировал с версией Q8-x64 (которая не тестирует архитектуру процессора),
Magick.NET-Q8-x64.Native.dll
уже существовал и не был перезаписан.Решение. Удалите временный каталог собственной библиотеки. На моей версии Windows она находилась по адресу
%TEMP%\Magick.NET.{TargetFramework}.{MagickNETVersion}
, Затем версия Q8-AnyCPU извлекла новую собственную библиотеку с помощью метода Environment_SetEnv.Отсутствие разрешений в Cache Directory
Проблема: Собственная библиотека была кэширована в каталоге с ограниченными разрешениями на выполнение кода.
Решение: измените местоположение каталога кеша. Мое решение - следующий код.
#if DEBUG private static bool MagickCacheDirectoryIsSet = false; public DefaultConstructor() { if (!MagickCacheDirectoryIsSet) { ImageMagick.MagickAnyCPU.CacheDirectory = @"path\to\more\permissive\directory"; MagickCacheDirectoryIsSet = true; } } #endif
Следуй этим шагам:
Перейти к менеджеру пакетов NuGet для решения (не проект)
Удалите все предыдущие версии Magick.net
Установите новую версию Magick.net для желаемых проектов
Перейти к
bin
папку основного проекта и удалите любой файл magick.netЗапустите ваше решение
Я успешно протестировал этот метод на VS2017 и Magick.net 7.6.1 (предыдущая установка была 7.4.4)
Возникла та же проблема: удаление всех магических библиотек из папки bin и переустановка решили ее.