2009-09-18 148 views
1

在32位Windows Server 2003計算機上,我創建了一個Visual Studio類庫項目並將平臺目標配置爲「任何CPU」。該項目參考文獻System.Data.net 64位參考問題

我改變了目標平臺到x64,建項目,並將該DLL在GAC 64位機器上。 64位機器同時具有64位和32位版本的System.Data

在這種情況下,我的DLL referes到System.Data - 32位或64位?

在此先感謝!

更新:我可以看到我的DLL在64位機器上以AMD64位模式運行。

回答

2

在「Any CPU」配置中編譯時,程序將運行在x86或x64上(也可能在其他體系結構上運行,但我不知道在其他體系結構上運行的任何其他.NET框架實現架構,但這是offtopic)。

如果您在x86配置下編譯,那麼您的應用程序將只在x86機器上運行(儘管它將仍然是x86應用程序,但win x64可以運行x86應用程序,因此您的應用程序將在其上運行。 同樣,如果使用x64配置進行編譯,您的應用程序將僅在x64機器上運行,而不在x86機器上運行。

因此,當您的應用在x86機器上運行時,它會使用32位dll。當它在x64機器上運行時,它將使用他的64位dll,假設你編譯爲x64或「Any CPU」;如果你編譯爲「x86」,它將使用32位的dll。

我希望這不是太混亂。

+0

因此,在x64機器上,我在x64中編譯的項目DLL將使用x64'System.Data' DLL。那是對的嗎? – Vijay

+0

是的,這是正確的。 – AASoft

1

如果針對「64」,那麼你的程序引用System.Data的64位版本。