我正在尝试使用从
下载的源代码在Visual Studio中构建System.Data.SQLitehttp://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki
我能够构建解决方案,但是当我尝试从TargetFramework = 3.5的项目引用System.Data.SQLite.dll时,我收到了以下消息:
“System.Data.SQLite.dll或其依赖项之一,需要稍后 .NET Framework的版本,而不是项目中指定的版本。“
我注意到他们的托管项目(System.Data.SQLite.2010,System.Data.SQLite.Linq.2010和System.Data.SQLite.Module.2010)都设置为目标.NET 4.0。然后我将所有这些改为参考3.5,重建,并再次尝试。然后我能够引用该项目,但是我收到了一个新的运行时错误:
“无法使用文件或程序集'System.Data.SQLite'或其中一个 依赖。此程序集由比运行时更新的运行时构建 当前加载的运行时并且无法加载。“
我使用ildasm打开.dll,清单确实说//元数据版本:v4.0.30319这对我没有意义,因为他们的文档明确指出它应该适用于.NET 2.0:
“。我们希望提供依赖于.NET Framework 2.0的托管二进制文件 SP2(或LINQ程序集,.NET Framework 3.5 SP1)。互联网 Framework 2.0得到了广泛的部署,并且可以为它生成二进制文件 也可以使用.NET从项目中成功引用和使用 框架4.0。 “
http://system.data.sqlite.org/index.html/doc/trunk/www/build.wiki
这个解决方案是一场噩梦,有很多目标文件和大量的自定义构建选项。我不太确定目标框架的设置位置。我假设某处发生了一些魔法。
有没有人有建立这个项目的经验?任何帮助,将不胜感激。谢谢!
答案 0 :(得分:2)
在针对v3.5的Visual Studio 2010中构建System.Data.SQLite解决方案的关键是知道VC ++项目(SQLite.Interop.2010和SQLite.Interop.Static)默认是针对框架版本4.0。虽然您在C#项目(System.Data.SQLite.2010和System.Data.SQLite.Linq.2010)上正确定位了v3.5,但可能并不清楚如何翻转VC ++项目的目标版本。
Microsoft建议在VC ++中更改框架版本的方法是从Visual Studio 2010卸载项目。然后打开文本编辑器,在解决方案目录中找到.vcxproj,并插入值为&的TargetFrameworkVersion标记#34; V3.5"进入" Globals" PropertyGroup标记。在Visual Studio 2010中重新加载项目后,您现在应该在项目属性的Framework and References部分中看到version = 3.5。 Reference Link
对于System.Data.SQLite,您必须为两个VC ++项目(SQLite.Interop.2010和SQLite.Interop.Static)执行此操作。注意:如果您尝试将VC ++项目定位到Visual Studio 2010中的框架版本3.5,则还需要安装Visual Studio 2008 SP1(VC 9.0)。另外,如果要在框架版本3.5上的VC ++ 2010中编译x64,则需要在Visual Studio 2008 SP1(VC 9.0)中安装x64编译器和工具(默认情况下不安装)。
重新编译后,ildasm应显示"元数据版本:v2.0.50727"在System.Data.SQLite.dll的清单中
我注意到在将VS2010解决方案翻转到框架版本3.5后,由于作者如何引用"属性"在System.Data.SQLite.Linq.2010中存在一些新的构建错误。代码中的资源(即Resources.resx)。
答案 1 :(得分:1)
这可能是由使用VS2010构建的,我相信默认使用的ToolsVersion设置为4.0。该zip文件中包含VS2008的MSBuild解决方案文件(默认情况下使用的ToolsVersion为3.5)。我怀疑使用.NET 3.5版本的MSBuild构建该解决方案文件将为您提供与3.5版本兼容的DLL。
" C:\的Windows \ Microsoft.NET \框架\ v3.5版本\ MSBuild.exe" ""