通过nuget使用Z3时libz3.dll的DllNotFoundException

时间:2018-12-09 12:33:44

标签: c# .net-core nuget z3

我在.NET Core 2.1项目中通过NuGet包使用Z3,最近尝试从版本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.dllMicrosoft.Z3.dll都存储在%userprofile%\.nuget\packages\z3x64win\4.5.0.1\lib中,
  • 试图按照here的描述将此路径添加到PATH环境变量中,但没有帮助,
  • 试图手动将libz3.dllMicrosoft.Z3.dll保存到项目的bin目录中,但问题仍然存在。

还有其他必要的步骤来引用Z3吗?

2 个答案:

答案 0 :(得分:0)

在过去,我记得Z3遇到这些问题,并且经常尝试以下方法可以解决此问题:

  • 完全删除并重置您的Microsoft.Z3.dll参考。在再次添加引用之前,请确保csproj文件与引用无关。
  • 重新下载或获取Z3 dll,以便您百分百确定它们匹配,并且VS或您的环境不使用缓存。

  • 您确定libz3.dll和z3.exe都在您的PATH中吗?

答案 1 :(得分:0)

现在有一个官方的.NET Core Z3 NuGet软件包可以解决您的所有问题:https://www.nuget.org/packages/Microsoft.Z3.x64/