.net 64位参考问题

时间:2009-09-18 10:04:08

标签: .net 64-bit

在32位Windows Server 2003计算机上,我创建了一个Visual Studio类库项目和平台目标,配置为“任何CPU”。该项目引用了System.Data

我将平台目标更改为x64,构建项目并将DLL放在64位计算机上的GAC中。 64位机器具有64位和32位版本的System.Data

在这种情况下,我的DLL引用哪个System.Data - 32位或64位?

提前致谢!

更新:我可以在64位计算机上看到我的DLL在AMD64位模式下运行。

2 个答案:

答案 0 :(得分:2)

当您在“任何CPU”配置中编译时,您的程序将在x86或x64上运行(或许,在其他体系结构上运行,但我不知道在其他体系结构上运行的.NET框架的任何其他实现,但这是offtopic)。

如果您在x86配置中编译,那么您的应用程序将仅在x86计算机上运行(但是,win x64可以运行x86应用程序,因此您的应用程序将在其上运行,尽管它仍然是x86应用程序)。 同样,如果使用x64配置进行编译,则应用程序将仅在x64计算机上运行,​​而不在x86计算机上运行。

因此,当您的应用在x86计算机上运行时,它使用32位dll。当它在x64机器上运行时,它将使用64位dll,假设您使用x64或“任何CPU”进行编译;如果编译为“x86”,它将使用32位dll。

我希望这不会太混乱。

答案 1 :(得分:1)

如果您的目标是“x64”,那么您的程序将引用64位版本的System.Data。