DllNotFoundException для libz3.dll при использовании Z3 через nuget - PullRequest
0 голосов
/ 09 декабря 2018

Я использую Z3 через пакет NuGet в своем проекте .NET Core 2.1 и недавно пытался обновить версию 4.5.0.1 до 4.8.1 .Затем я вернулся к 4.5.0.1 и получил это исключение при создании контекста:

using(var ctx = new Microsoft.Z3.Context())
{

}

System.DllNotFoundException: Невозможно загрузить DLL 'libz3.dll' или одну из ее зависимостей: Указанный модульневозможно найти.(Исключение из HRESULT: 0x8007007E)

Я проверил следующее:

  • мое приложение скомпилировано для x64, и я использую пакет z3x64win,
  • оба libz3.dll и Microsoft.Z3.dll хранятся в %userprofile%\.nuget\packages\z3x64win\4.5.0.1\lib,
  • пытался добавить этот путь в переменную среды PATH, как описано здесь , но это не помогло,
  • попытался вручную сохранить libz3.dll и Microsoft.Z3.dll в директории bin проекта, но проблема сохраняется.

Есть ли другие необходимые шаги для ссылки на Z3?

Ответы [ 2 ]

0 голосов
/ 05 июня 2019

Теперь существует официальный пакет .NET Core Z3 NuGet, который должен решить все ваши проблемы: https://www.nuget.org/packages/Microsoft.Z3.x64/

0 голосов
/ 15 апреля 2019

В те дни, когда я вспоминал, у меня были такие проблемы с Z3, и часто он работал, пытаясь сделать следующее:

  • Полностью удалите и сбросьте ссылку на файл Microsoft.Z3.dll.Перед добавлением ссылки убедитесь, что файл csproj очищен от ссылок.
  • Повторно загрузите или получите файлы Z3, чтобы вы были на сто процентов уверены, что они совпадают, и что VS или ваша среда не используюткеш.

  • Вы уверены, что и libz3.dll, и z3.exe есть в вашей переменной PATH?

...