我有一个.NET应用程序,应该被编译为一个32位的应用程序.我怀疑我的构建服务器实际上并没有这样做.
如何确定.NET应用程序是否实际设置为以32位模式运行?
Jac*_*ius 49
如果您正在尝试检查正在运行的应用程序是否以32位或64位模式运行,请打开任务管理器并检查它是否在进程名称旁边有星号(*32).
如果您有一个已编译的DLL并且想要检查它是否已编译为32位或64位模式,请执行以下操作(来自相关问题). 我认为你想要你为AnyCPU编译.
打开Visual Studio命令提示符并键入"corflags [your assembly]".你会得到这样的东西:
c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC>corflags "C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Data.dll" Microsoft (R) .NET Framework CorFlags Conversion Tool. Version 3.5.21022.8 Copyright (c) Microsoft Corporation. All rights reserved. Version : v2.0.50727 CLR Header: 2.5 PE : PE32 CorFlags : 24 ILONLY : 0 32BIT : 0 Signed : 1
你正在专注于PE和32BIT.
AnyCpu:
PE:PE32 32BIT:0
86:
PE:PE32 32BIT:1
64位:
PE:PE32 + 32BIT:0
Kev*_*vin 20
要在运行时执行此操作...
你可以评估IntPtr.Size.如果IntPtr.Size == 4那么它是32位(4 x 8).如果IntPtr.Size == 8那么它是64位(8 x 8)
最快的方法可能是在64位计算机上运行时,它在任务管理器中的名称后面会有一个星号(*).星号表示它在syswow64中运行,因为它标记为32位.
另一种方法是对它运行corflags.exe,这将显示你想要的答案.这附带.NET SDK.