在.NET中,「平臺目標:任何CPU」編譯選項允許.NET組件64 位X64的機器上運行,和32位 上一臺x86機器。使用'Platform Target:x86'編譯器選項,還可以強制程序集在x64機器上以x86形式運行。力86 CLR上的「任何CPU」 .NET組件
是否有可能運行與「任何CPU」標誌的組件,但是確定它是否應該在x86或x64 CLR上運行?通常,這個決定是由CLR/OS Loader(根據我的理解)根據底層系統的位數作出的。
我想寫一個C#.NET應用程序,可以用(讀:代碼注入)相互作用的其它正在運行的進程。 x64進程只能注入到其他x64進程中,並且與x86一樣。理想情況下,我想利用JIT編譯的和任何CPU選項,以允許單個應用程序被用來注入任一的x64或x86過程(在x64機器上)。
的想法是,應用程序將被編譯爲任何CPU。在x64機器上,它將以x64運行。如果目標進程是x86,則它應該自行重新啓動,強制CLR將其作爲x86運行。這可能嗎?
我知道你可以強制它通過包裝它在x86啓動程序集,但我想知道如果你可以動態強制它'任何CPU'編譯程序集。無論如何,如果我找不到其他東西,可能會回到這個位置。會upvote,但沒有足夠的代表。 – jeffora 2009-10-02 01:49:22
進程是64位或32位。如果程序集是在32位進程中加載的,並且它構建爲任何CPU,則它將被作爲32位進行JIT處理,在64位進程中它將被打成64.你打算如何創建承載程序集的程序集? – jnoss 2009-10-02 02:38:35