【发布时间】:2010-06-01 04:24:16
【问题描述】:
我有一个为 .NET 2.0 编写的现有 C# 应用程序,目前针对 AnyCPU。它目前引用了一些我没有源代码的第三方 .NET DLL(我不确定它们是为 x86、x64 还是 AnyCPU 构建的)。
如果我想专门在 64 位 Windows 操作系统上运行我的应用程序,我应该以哪个平台为目标才能让我的应用程序无错误地运行?我目前的理解是针对:
- x86:如果为 x86 构建了至少一个第三方 .NET dll,或者使用 p/Invoke 与 Win32 DLL 交互。应用程序将在 32 位和 64 位操作系统上以 32 位模式运行。
- x64:如果所有第三方 .NET dll 已经为 x64 或 AnyCPU 构建。应用程序只能在 64 位操作系统中运行。
- AnyCPU:如果所有第三方 .NET dll 都已为 AnyCPU 构建。应用程序将在 32 位操作系统上以 32 位模式运行,在 64 位操作系统上以 64 位模式运行。
另外,我是否正确地相信,虽然以 AnyCPU 为目标在构建引用第三方 x86 .NET DLL 的应用程序时不会产生错误,但当应用程序在 64 上运行时尝试加载这些 DLL 时,它会引发运行时异常位操作系统。
因此,只要我的第三方 DLL 之一正在执行 p/Invoke 或者是 x86,我就只能针对此应用程序以 x86 为目标?
【问题讨论】: