我有一个针对.NET 2.0编写的现有C#应用程序,目标是AnyCPU。它目前引用了一些第三方.NET DLL,我没有它的源代码(我不确定它们是否为x86,x64或AnyCPU构建)。在构建64位窗口时针对x86与AnyCPU操作系统
如果我想在64位Windows操作系统上专门运行我的应用程序,那么我应该定位哪个平台以使我的应用程序无错地运行?我当时的理解是目标:
- :如果至少有一个第三方的.NET的DLL是专为x86或使用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时,应用程序将引发运行时异常时,它会尝试在运行时加载这些DLL在64位操作系统上。
因此,只要我的第三方DLL中的一个正在执行p/Invoke或x86,我只能针对此应用程序的x86目标?
AnyCPU是我的VS实例的默认目标平台,当你除了.NET框架之外没有其他的依赖关系时,这是毫无疑问的。一旦引入了其他依赖关系,则假定应用程序将继续在64位平台上工作,仅仅是因为应用程序针对AnyCPU并编译没有问题,这将是一件痛苦的事情。谢谢回答 :) – anonymous 2010-06-01 05:37:49