c# – System.IO.FileLoadException:无法加载文件或程序集“Sys
(这是一个重复的问题,已经在stackoverflow.com中询问了,我已经阅读了答案,我已经尝试过解决方案,但是并没有解决我的问题,我将要解释我的问题是什么,我做了)
这是我的问题: 我的应用程序使用System.Data.SQLite.DLL.我引用它并在我的电脑中正常运行,但是无法在另一台计算机上运行.这是错误信息:
我的电脑正在运行Windows 7 32位,Visual Studio 2010. 另一台计算机也运行Windows 7 32位,没有安装Visual Studio. 我试过了 尝试1:确保使用版本x86构建应用程序,并使用目标框架构建应用程序:.NET Framework 2.0.完成. 尝试2:确保应用程序使用System.Data.SQLite(x86 .Net Framework 2.0(sqlite-netFx20-binary-Win32-2005-1.0.88.0))的正确构建引用.完成 尝试3:在App.config尝试这些代码: <?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v2.0.50727"/> </startup> </configuration> 和这个 <?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v2.0.50727"/> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> </startup> <runtime> <NetFx40_LegacySecurityPolicy enabled="true"/> </runtime> </configuration> 和这个 <?xml version="1.0" encoding="utf-8" ?> <configuration> <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v2.0.50727"/> </startup> </configuration> 完成. 尝试4:尝试关闭另一台计算机上的用户帐户控制.完成. 尝试5:尝试在另一台计算机上安装Visual C Runtime(我安装Visual Microsoft Visual C Runtime 2010可再发行组件包(x86),也尝试了2005年的verse.).完成. 尝试6:尝试重新安装.NET Framework 2.0 SP2.接收错误:
更新:(阅读答案和意见后) 尝试8:双重确认另一台计算机正在运行32位Windows 7.完成 尝试9:更改.csproj文件中的HintPath声明: <Reference Include="System.Data.SQLite,PublicKeyToken=db937bc2d44ff139,processorArchitecture=x86"> <HintPath>E:Developer SoftSQLitesqlite-netFx20-binary-bundle-Win32-2005-1.0.88.0System.Data.SQLite.dll</HintPath> </Reference> 为此: <Reference Include="System.Data.SQLite,processorArchitecture=x86"> <HintPath>..System.Data.SQLite.dll</HintPath> </Reference> 完成尝试9. 经过上述尝试,结果仍然是一样的.应用程序可以从我的计算机正常运行,并且无法在另一台计算机上运行. 这是一个开源的免费软件,简单的电话簿.我已经提交并将最新的源代码上传到其源控制服务器:http://simpb.codeplex.com/SourceControl/list/changesets(更改集号:fd847ac6c406) 解决方法
我已经解决了这个问题.这是我如何解决的:
短篇故事: 很长的故事: 是的,我已经更改了System.Data.SQLite的版本. 该程序使用的旧版本的System.Data.SQLite是V1.0.66.我使用的新版本是最新版本:V1.0.88,于2013年8月8日发布.(是的,从今天起约4天前).阅读更多:http://system.data.sqlite.org/index.html/timeline 然后我决定放弃新版本(V1.0.88),并使用旧版本(V1.0.66),一切恢复正常.程序再次可以在另一台计算机上执行. 我试图看看V1.0.88的源代码,但是我找不到导致问题的代码行.我可以发现的最好的是在System.Data.SQLite.Interop的项目.当我在Visual Studio 2010中加载解决方案时,System.Data.SQLite.Interop被预置为构建.NET Framework 4.0.我不知道如何改变它.之后,我重新加载Visual Studio 2008中的解决方案,这是System.Data.SQLite.Interop的常见属性,显示它将为.NET Framework 2.0(这是我正在寻找的)构建,但是我无法构建解决方案.发生一些构建错误.我没有花时间来调试它. 我需要开发.NET Framework 2.0的程序,因为还有使用Windows XP的用户. 我假设V1.0.88包含错误,但我可能是错误的.无论如何,至于目前的解决方案,我只是坚持V1.0.66. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |