(这是一个在stackoverflow.com上被重复提出的问题。我已经阅读了答案,尝试了解决方案,但没有解决我的问题。我将解释我的问题和我所做的事情。)
这就是我的问题:
我的应用程序使用了System.Data.SQLite.DLL。我已经引用它并在我的电脑上正常运行,但在另一台电脑上无法运行。这是错误信息:
System.IO.FileLoadException: 无法加载文件或程序集“System.Data.SQLite, Version=1.0.88.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139”或其中之一的依赖项。应用程序无法启动,因为其并行配置不正确。请参阅应用程序事件日志或使用命令行 sxstrace.exe 工具获取详细信息。(HRESULT 的异常:0x800736B1) 文件名:“System.Data.SQLite, Version=1.0.88.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139” ---> System.Runtime.InteropServices.COMException (0x800736B1): 应用程序无法启动,因为其并行配置不正确。请参阅应用程序事件日志或使用命令行 sxstrace.exe 工具获取详细信息。(HRESULT 的异常:0x800736B1) at SimPB.config.PrepareDatabase() at SimPB.config.InitializeProgram() at SimPB.Program.Main()
我的电脑上运行的是Windows 7 32位,Visual Studio 2010。
另一台电脑也运行的是Windows 7 32位,但没有安装Visual Studio。
我尝试过:
尝试1:确保应用程序使用的是Release + 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>
完成。
Attempt 4:尝试关闭另一台计算机上的用户账户控制(User Account Control)。已完成。
Attempt 5:尝试在另一台计算机上安装Visual C++ Runtime(我安装了Microsoft Visual C++ Runtime 2010 Redistributable Package(x86),也尝试了2005版本)。已完成。
Attempt 6:尝试重新安装.NET Framework 2.0 SP2。收到错误信息:
您必须使用控制面板中的“打开或关闭Windows功能”来安装或配置Microsoft .NET Framework 2.0 SP2。
更新(阅读答案和评论后):
Attempt 7:确保System.Data.SQLite.DLL位于输出bin文件夹中。已完成。
Attempt 8:再次确认另一台计算机正在运行32位的Windows 7。已完成。
Attempt 9:更改.csproj文件中HintPath的声明:
将此更改为:
<Reference Include="System.Data.SQLite, Version=1.0.88.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
<HintPath>E:\Developer Soft\SQLite\sqlite-netFx20-binary-bundle-Win32-2005-1.0.88.0\System.Data.SQLite.dll</HintPath>
</Reference>
变成这样:
<Reference Include="System.Data.SQLite, Version=1.0.88.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
<HintPath>..\System.Data.SQLite.dll</HintPath>
</Reference>
第9次尝试完成。
在上述尝试之后,结果仍然相同。该应用程序可以在我的计算机上正常运行,但无法在另一台计算机上运行。
这是一款开源免费软件,Simple Phone Book。我已经提交并上传了最新的源代码到它的源代码控制服务器:
http://simpb.codeplex.com/SourceControl/list/changesets (变更集编号:fd847ac6c406)