【问题标题】:How to run x64 Debug Mode DLLs are "Any CPU"?如何运行 x64 调试模式 DLL 是“任何 CPU”?
【发布时间】:2013-01-23 02:57:29
【问题描述】:

我将 DLL 编译为“任何 CPU”,因此它们可以在 x86 和 x64 中运行,但是当我尝试在调试模式 (x64) 下运行时,它一直告诉我尝试运行项目时出错:无法加载文件或程序集“项目”或其依赖项之一。试图加载格式不正确的程序。

但是,当我运行从调试目录创建的 *.exe 或在没有调试的情况下在 Visual Studio 中运行它时,它运行良好,如果我在 x86 调试模式下运行它也可以。为什么它可以在 Visual Studio 中的调试模式之外的所有环境中工作?

该应用程序是桌面应用程序,因此没有 IIS 应用程序池可以更改为 32 位。

【问题讨论】:

  • “项目”的平台设置为什么?
  • @Gray 平台设置为 x64

标签: c# wpf visual-studio-2010 dll platform-independent


【解决方案1】:

我注意到,有时当您更改配置时,并不会更改所有项目。如果您在 x64 配置中转到 Build > Configuration Manager,是否所有项目都设置为构建 x64 版本?

【讨论】:

  • 是的,一切都设置为 x64。
【解决方案2】:

使用corflags.exe 获取“项目”dll 的 PE 信息。如果它被构建为 x64,它应该说 PE:PE32+32Bit:0。检查以确保“项目”的调用者正在引用该项目,而不是在其他地方的构建目录中的流氓 dll。

  • 先检查参考文献
  • 使用 corflags 检查该引用
  • 报告结果

【讨论】:

  • 这应该告诉我什么?解决方案不运行的唯一时间是在 x64 的调试模式下。它在 Release 中运行,在没有调试的情况下运行,如果我运行 exe 则运行。
  • 您可能在 Visual Studio 中引用了未在本地复制的 dll。确认后,您可以检查调试文件夹中的 dll 正在构建的内容。它可能会提供一些关于为什么你会得到一个糟糕的图像格式的一些见解。当你不知道环境是什么样的时候,很难调试这些东西,所以我只是试图消除一些变量。如果您不想检查,那也没关系。祝你好运。
  • corflags 对 exes 有效吗?因为Project是启动项目所以是exe。
  • 哈哈,伙计……这确实需要 3 秒钟来检查(确实如此)。我觉得你不想尝试我建议的东西。就像我之前说的,那很好。我相信你会想出办法的。
猜你喜欢
  • 1970-01-01
  • 2021-10-22
  • 2020-01-25
  • 1970-01-01
  • 2021-12-12
  • 1970-01-01
  • 1970-01-01
  • 2015-12-21
  • 1970-01-01
相关资源
最近更新 更多