我目前正在编写一个桌面应用程序(没有托管在IIS
或类似的.NET 4.5.2中),它使用SQLite
和Entity Provider SQLite
。为了让它在Visual Studio中运行,我必须安装SQLite
站点中的1.0.65.0版本包,以便在Visual Studio中为SQLite
提供EF6
提供程序。就我所了解的情况而言,这可以像预期的那样工作,这也是实现这一目标的唯一途径。桌面应用程序+ SQLite - 版本= 1.0.65.0与版本1.0.104.0
我的应用程序,我想用目前的版本是1.0.104.0(再次,从sqlite的页面信息)。我已经成功添加了Nuget
包这个版本我的应用程序,当我考虑的参考选项卡上,我可以看到System.Data.SQLite
,System.Data.SQLite.EF6
和System.Data.SQLite.Linq
,所有版本1.0.104.0和特定版本设置为True。复制本地设置为全部三个都为真。
所以,现在当我运行我的应用程序,并获得该行:
using (var ctx = new SmtAoiLookupEntities())
{
foreach (var lu in ctx.Lookups.Where(d=>!string.IsNullOrEmpty(d.Aoi)))
{
...
}
}
我收到以下错误信息:
类型的异常“System.IO.FileLoadException”发生在mscorlib.dll并未在托管/本机边界之前处理
其他信息:无法加载文件或程序集“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”的引用,但完全没有结果。
我用
gacutil -l System.Data.SQLite
,看看哪些程序集存储在GAC - >版本1.0.104.0
现在,这才会出现,当我运行从Visual Studio内的应用程序的情况发生;如果我在Visual Studio之外将应用程序作为可执行文件运行,那么在保存上下文时会出现不同的错误。看起来这是一个应用程序错误,并且与程序集版本问题无关。我也尝试将应用程序设置为32位应用程序,问题保持不变。
的主要问题:我想能够调试在Visual Studio中的应用程序,否则这可能成为相当繁琐。任何想法如何告诉Visual Studio不要加载1.0.65.0库?
尝试清理解决方案并手动删除'bin'和'obj'文件夹。 –
我做了多次,但没有改变一件事。正如我所说的,该应用程序似乎在Visual Studio之外工作。 –