【问题标题】:Reference platform specific System.Data.SQLite参考平台特定的 System.Data.SQLite
【发布时间】:2010-04-29 00:27:47
【问题描述】:

我正在使用 SQLite 进行单元测试,可能会将其用作本地开发/登台的数据库。

System.Data.SQLite 基本上有两个版本:x86 和 x64。正确的应该用于特定平台。

我有 64 位 Win7,团队中的其他人可能使用 32 位操作系统。在这个阶段服务器的平台是未知的。

如果我在 64 位平台上使用 32 位版本的程序集,我会得到 BadImageFormatException: Could not load file or assembly 'System.Data.SQLite'。我相信尝试在 32 位平台上使用 64 位程序集也会发生类似的情况。

所以我的问题是引用 SQLite 程序集以便它不依赖于平台并且人们可以使用它的最佳方法是什么?

在 64 位平台上使用 32 位版本的程序集是可以的(也许某处有一个开关?)。

【问题讨论】:

标签: .net visual-studio assemblies sqlite platform


【解决方案1】:

如果它已安装到 GAC 中,那么您只需引用程序集,系统就会选择正确的程序集。

否则,您需要确保“手动”引用正确的版本(过去,我使用的构建系统在构建时将正确的版本复制到“deploy”文件夹。这些天,我所做的一切是 64 位的,所以没什么大不了的)。

或者,您可以将应用程序构建为 x86,然后仅使用 32 位版本。在项目属性的 Build 选项卡上,将“Platform target”设置为“x86”。您只需要对可执行文件执行此操作:DLL 仍然可以是 AnyCPU。

【讨论】:

  • 我已经从 GAC 引用了它,但它使用的是 32 位版本的程序集。
  • 好的。我将不得不接受听起来像解决方案的答案。虽然它不像我预期的那样工作。目前我已将我的项目的平台设置为 x86,并且一直使用 x86 版本。
猜你喜欢
  • 2011-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-22
  • 2023-03-27
  • 2017-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多