桌面应用程序+SQLite-版本=1.0.65.0,而版本为1.0.104.0



我目前正在编写一个桌面应用程序(没有托管在IIS或类似的.NET 4.5.2中),它使用SQLiteSQLite的实体提供程序。为了让它在Visual Studio中工作,我必须从SQLite站点安装1.0.65.0版本的包,才能在Visual Studio内获得SQLiteEF6提供程序。据我所知,这是一个符合预期的广告,这也是唯一可以做到的方法。

对于我的应用程序,我希望使用当前版本1.0.104.0(同样是sqlite页面中的信息)。我已经成功地将该版本的Nuget包添加到我的应用程序中,当我查看references选项卡时,我可以看到System.Data.SQLiteSystem.Data.SQLite.EF6System.Data.SQLite.Linq,所有这些都是1.0.104.0版本,Specific version设置为True。"复制本地"(Copy Local)对所有三个都设置为true。

所以现在,当我运行我的应用程序并到达以下行时:

using (var ctx = new SmtAoiLookupEntities())
{
foreach (var lu in ctx.Lookups.Where(d=>!string.IsNullOrEmpty(d.Aoi)))
{
...
}
}

我收到以下错误消息:

mscorlib.dll中发生类型为"System.IO.FileLoadException"的异常,在托管/本机边界之前未进行处理

其他信息:无法加载文件或程序集"System.Data.SQLite,Version=1.0.0.65.0,Culture=neutral,PublicKeyToken=db937bc2d44ff139"或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT异常:0x80131040)

由此,我了解到我的应用程序试图加载版本1.0.65.0,尽管我所有的参考都指向1.0.104.0。我完全不知道我的应用程序是从哪里得到的,我想加载1.0.65.0。我甚至在文件中找到了任何引用";1.0.65";但绝对没有结果。

我使用

gacutil -l System.Data.SQLite 

以查看哪些程序集存储在GAC中->版本1.0.104.0

现在,只有当我在VisualStudio中运行应用程序时,才会出现这种情况;如果我在Visual Studio外部以可执行文件的形式运行应用程序,则在保存上下文时会出现不同的错误。这似乎是一个应用程序错误,与程序集版本问题无关。我还尝试将应用程序设置为32位应用程序,问题仍然存在。

主要问题是:我希望能够在VisualStudio中调试应用程序,否则这可能会变得非常麻烦。你知道我如何告诉Visual Studio不要加载1.0.65.0的libs吗?

解决方案中的一个项目仍然指向以前的SQLite版本。在我的案例中,是哪个文件引发了错误。确保解决方案中的每个项目都有更新的包版本,这为我解决了问题。

相关内容

最新更新