Может ли Microsoft Z3 .NET API обрабатывать .NET Core? Мы используем его в алгоритме планирования для школьного проекта, и мы считаем, что когда проект был обновлен до ядра .net, z3 перестала работать. Мы не можем найти информацию о том, что z3 используется с ядром .net.Использование Z3 с ядром ASP.NET
1
A
ответ
1
Z3 использует кодовые контракты, которые недоступны в ядре .NET. Однако у нас есть фиктивный класс, который их заменяет и который поставляется с исходным кодом, см. src/api/dotnet/core/DummyContracts.cs.
На данный момент, это не привязан к остальной части нашей строительной инфраструктуры, но вы можете построить их таким образом:
cd src/api/dotnet/core
dotnet restore
dotnet build
(Убедитесь, что вы обновить вашу копию исходного кода, как я только что совершил исправление для сборки ядра.)
Вы знаете, по какой-либо причине мы получили бы эту ошибку? Unhandled Exception: System.DllNotFoundException: Не удается загрузить DLL 'libz3.dll': указанный модуль не найден. (Исключение из HRESULT: 0x8007007E) в Microsoft.Z3.Native.LIB.Z3_del_context (IntPtr a0) в Microsoft.Z3.Context.Finalize() –
Z3 - это собственный код, реализованный в libz3.dll, и он имеет .NET. API, реализованный на C#, и вам необходимо запустить программы, которые используют Z3. Затем Microsoft.Z3.dll попытается найти libz3.dll при первом вызове функции Z3. Сообщение об ошибке означает, что libz3.dll не удалось найти; в Windows это должно быть в PATH, и пока вы строите вещи, он обычно находится в каталоге «build». –