【发布时间】: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 并出现上述错误。但我不知道为什么。