.NET exe没有选择dll依赖项

时间:2014-03-12 10:58:36

标签: c# .net sqlite dll

我再次开发了一个EXE:)

问题是它引用了SQLite dll文件,所以我将文件包含在同一路径上。现在在Windows 8中运行正常,但在Windows 7中它不是

错误是

  

System.IO.FileLoadException:无法加载文件或程序集'System.Data.SQLite,Version = 1.0.90.0,Culture = neutral,PublicKeyToken = db937bc2d44ff139'或其依赖项之一。应用程序无法启动,因为它的并排配置不正确。有关更多详细信息,请参阅应用程序事件日志或使用命令行sxstrace.exe工具。 (HRESULT异常:0x800736B1)   文件名:'System.Data.SQLite,Version = 1.0.90.0,Culture = neutral,PublicKeyToken = db937bc2d44ff139'---> System.Runtime.InteropServices.COMException(0x800736B1):应用程序无法启动,因为它的并行配置不正确。请参阅应用程序事件日志或使用命令行sxstrace.exe工具获取更多详细信息。

我尽我所能,但它没有在Windows 7上运行

这是一个独立的EXE。没有设置。

修改 这就是应用程序事件日志所说的

  

“C:\ System.Data.SQLite.dll”的激活上下文生成失败。无法找到依赖程序集Microsoft.VC80.CRT,processorArchitecture =“x86”,publicKeyToken =“1fc8b3b9a1e18e3b”,type =“win32”,version =“8.0.50727.6195”。请使用sxstrace.exe进行详细诊断。

3 个答案:

答案 0 :(得分:1)

我认为这就是你提到的原因,SQLite正在搜索64位dll!

尝试下载64位网址并使用exe

打包

您可以从这里下载 http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki

答案 1 :(得分:0)

  

并排配置不正确

这意味着要么:

  • 您的某个参考DLLS与您的项目目标类型
  • 不匹配
  • 或您的参考DLLS是混合目标类型

<强>解决方案:

  1. 确保您的项目设置为针对x86参考DLL的目标x86或针对x64参考DLL的目标x64,以及针对.NET版本的目标
  2. 确保所有参考DLL都是x86或所有x64版本,而不是x86和x64,并且.NET版本相同
  3. 如果您不确定是否可以通过右键单击参考来使用IlSpy进行检查。

答案 2 :(得分:0)

通常,此错误表示缺少依赖程序集。

  

“C:\ System.Data.SQLite.dll”的激活上下文生成失败。   依赖大会   的 Microsoft.VC80.CRT 下,ProcessorArchitecture用于= “86” 公钥= “1fc8b3b9a1e18e3b”,类型= “Win32的”,版本= “8.0.50727.6195”   无法找到 。请使用sxstrace.exe进行详细诊断。

这个程序集通常称为

  

Microsoft Visual C ++ 2005 Redistributable Package(x86)

,可以从here下载。

,往往还有其他原因。今天,对我们来说,它是“Bit9安全”,它不喜欢我们在我们的本地机器上对SQLite.dll程序集进行数字签名,并将签名的程序集上传到我们的服务器应用程序文件夹,其中包含与其他程序集不同的时间戳。应用文件夹。

解决方法是重新编译应用程序,签署所有程序集,上传和覆盖现有的应用程序文件。