【问题标题】:Elmah can't find SQLite.Interop.dllElmah 找不到 SQLite.Interop.dll
【发布时间】:2016-03-07 05:32:21
【问题描述】:

我在通过 Nuget 安装的 MVC 项目中有 ELMAH,但它找不到 SQLite.Interop.dll。

[DllNotFoundException:无法加载 DLL 'SQLite.Interop.dll': 找不到指定的模块。 (HRESULT 的例外情况: 0x8007007E)]
System.Data.SQLite.UnsafeNativeMethods.sqlite3_config_none(SQLiteConfigOpsEnum op) +0 System.Data.SQLite.SQLite3.StaticIsInitialized() +111
System.Data.SQLite.SQLiteLog.Initialize() +48
System.Data.SQLite.SQLiteConnection..ctor(字符串连接字符串)+55 Elmah.SQLiteErrorLog.GetErrors(Int32 pageIndex, Int32 pageSize, IList errorEntryList) +338 Elmah.ErrorLogPage.OnLoad(EventArgs e) +455
System.Web.UI.Control.LoadRecursive() +54
System.Web.UI.Page.ProcessRequestMain(布尔值 includeStagesBeforeAsyncPoint,布尔型 includeStagesAfterAsyncPoint) +772

我的输出目录具有适当的 x86 和 x64 目录,其中包含程序集。

如果我将其中一个复制到 bin 中,ELMAH 可以正常工作。

从事此项目的其他开发人员都没有遇到任何问题。我们都在本地使用 IIS Express、VS 2013,并且在任何人的 GAC 中都没有 SQLite 二进制文件。

【问题讨论】:

标签: c# .net sqlite asp.net-mvc-4 elmah


【解决方案1】:

我已经看到了几种解决方案:

  • 将 SQLite.Interop.dll 作为项目添加到 Web 应用程序的根文件夹中,并将“构建操作”设置为“内容”,“复制到输出目录”设置为“如果较新则复制”或“始终复制”。在这种情况下,您需要选择要链接到的 x86 或 x64 版本,具体取决于您的 Web 应用程序是否要在启用 32 位的情况下运行。
  • 在构建后事件中复制相应的 SQLite.Interop.dll。
  • 使用 MSBuild 目标复制相应的 SQLite.Interop.dll。

【讨论】:

  • 我见过这些解决方案,我不明白为什么它可以在其他开发机器上运行,而不是我的。
  • 他们是否有可能为 SQLite 运行了 Setups 之一?
  • 我认为这不太可能,但我会调查一下。我们只为 Elmah 使用 SQLite,并且它都是用 nuget 安装的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-04
  • 1970-01-01
  • 2012-12-04
  • 1970-01-01
  • 1970-01-01
  • 2017-05-27
  • 2019-12-24
相关资源
最近更新 更多