【问题标题】:Unable to get project to run now that it's 64 bit现在无法运行项目,因为它是 64 位
【发布时间】:2015-01-09 14:18:08
【问题描述】:

我用 C# 编写了一个需要在 64 位中运行的项目。

该项目是与其他项目的解决方案的一部分,它引用了其中的一些,它们是库。

我收到错误"Could not load file or assembly 'KittenLibrary' or one of its dependencies. An attempt was made to load a program with an incorrect format."

我已经进入配置管理器,并设置

活动解决方案配置:调试

主动解决方案平台:x64

KittenProject:调试、x64、构建 KittenLibrary:调试、x64、构建

在两个项目的属性上,我已将其更改为

配置:活动(调试) 平台:x64 平台目标:x64

我已经删除了所有 bin / obj 文件夹,清理了解决方案,但我仍然遇到同样的错误。

我做错了什么?

这是托管在我的本地 IIS 上。

编辑:我已经尝试删除对我的其他项目的引用,所以我只引用核心 dll 和实体框架,它不会在 64 位中运行我的 kittenproject。

【问题讨论】:

  • 可能 KittenLibrary 使用的 DLL 之一是使用 x86 编译的,这意味着您无法在 x64 项目中加载它
  • 我们所做的是将所有库设置为为 AnyCPU 编译,然后只为可执行文件(应用程序或服务)设置所需的位数。 (但这不适用于使用具有一定位数的非托管 DLL 的库。)
  • 因此,如果我将我的项目设为 64 位,我将无法引用任何其他项目,除非它们是 64 位并且他们所有的库(如来自 nuget 等的东西)都是 64 位的?
  • 如果您将项目设为 64 位,则可以引用 AnyCPU 或 64 位的任何项目。这就是我们制作所有类库 AnyCPU 的原因。然后由可执行项目(并且只有可执行项目)使用哪个位数。
  • 我已将一切恢复正常,项目运行。现在我进入配置管理器并将我的 KittenProject 更改为 x64,它说它无法运行 KittenProject 并出现上述错误。但我不知道为什么。

标签: c# build 64-bit


【解决方案1】:

我自己不止一次遇到过这个问题。对我来说,解决方法是将平台目标设置为 x86 而不是 AnyCPU 或 x64。您可能想尝试一下。

【讨论】:

  • 试过了,但没有运气。
【解决方案2】:

当切换到 x64 时,WCF 项目显然无法工作,而我无法找到任何解释或修复。这里有更多信息:WCF 64 bit not working

我将不得不使用其他东西来编写我的项目,也许是 mvc 4 web api

【讨论】:

  • 或许您必须进入 AppPool 高级设置并关闭“启用 32 位应用程序”?
  • 试过了,问题是它引用了非 64 位库。可能可以手动引用 64 位版本(如果存在),但我不想尝试。
猜你喜欢
  • 2020-11-14
  • 1970-01-01
  • 2017-01-18
  • 2013-07-17
  • 1970-01-01
  • 2015-05-25
  • 1970-01-01
  • 2013-03-06
  • 2017-01-21
相关资源
最近更新 更多