桌面应用程序+ SQLite - 版本= 1.0.65.0与版本1.0.104.0

时间:2017-01-10 06:18:38

标签: c# .net sqlite visual-studio-2015

我目前正在编写一个桌面应用程序(没有托管在IIS或类似的.NET 4.5.2中),它使用SQLiteSQLite的实体提供程序。为了使它在Visual Studio中工作,我必须从SQLite站点安装1.0.65.0版本包,以获取Visual Studio中EF6的{​​{1}}提供程序。据我所知,这是预期的广告,这也是唯一可行的方式。

对于我的应用程序,我想使用当前版本1.0.104.0(再次,来自sqlite页面的信息)。我已成功将此版本的SQLite软件包添加到我的应用程序中,当我查看引用标签时,我可以看到NugetSystem.Data.SQLiteSystem.Data.SQLite.EF6版本1.0.104.0和特定版本设置为True。对于所有这三个,Copy Local设置为true。

现在,当我运行我的应用程序并进入该行时:

System.Data.SQLite.Linq

我收到以下错误消息:

  

mscorlib.dll中出现“System.IO.FileLoadException”类型的异常,并且在托管/本地边界之前未处理

     

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

据此,我了解我的应用程序尝试加载版本1.0.65.0,尽管我的所有引用都指向1.0.104.0。我完全不知道我的应用程序在哪里得到我想要加载1.0.65.0的想法。我甚至在文件中找到了对“1.0.65”的任何引用都没有结果。

我用过

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

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

现在,只有在Visual Studio中运行应用程序时才会出现这种情况。如果我在Visual Studio外部运行应用程序作为可执行文件,则在保存上下文时会出现不同的错误。看来这是一个应用程序错误,与程序集版本问题无关。我也尝试将应用程序设置为32位应用程序,问题保持不变。

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

1 个答案:

答案 0 :(得分:1)

您的解决方案中的项目仍然指向以前的SQLite版本。在我的情况下,这是项目哪个文件抛出错误。确保解决方案中的每个项目都有更新的软件包版本解决了我的问题。