To determine whether a DLL (or EXE) is managed or unmanaged, use dumpbin.exe
with the /dependents
switch. If you see mscoree.dll
in the output, then the assembly is a managed assembly.
For example, for a managed DLL that I created in Visual Studio 2010, I get the following output:
Dump of file <MANAGED_DLL>.dll
File Type: DLL
Image has the following dependencies:
mscoree.dll
Summary
2000 .reloc
2000 .rsrc
2000 .sdata
12000 .text
dumpbin.exe
is delivered as part of the Visual Studio Tools. To run it, a convenient way to do so is via the Visual Studio Command Prompt. For example, from my Windows 7 machine running Visual Studio 2010, I find the Visual Studio Command Prompt in the Windows Start Menu at:
Microsoft Visual Studio 2010 => Visual Studio Tools => Visual Studio Command Prompt (2010)
Then, within the Visual Studio Command Prompt just enter:
dumpbin /dependents DLL_OF_INTEREST.DLL
or
dumpbin /dependents EXE_OF_INTEREST.EXE
As an alternative, you can use the corflags.exe
utility that is also included with Visual Studio Tools. Running it from the Visual Studio Command Prompt on an unmanaged assembly:
corflags UNMANAGED.DLL
..you'll get:
corflags : error CF008 : The specified file does not have a valid managed header
...whereas on a managed assembly, you'll get something like:
Version : v2.0.50727
CLR Header: 2.5
PE : PE32
CorFlags : 1
ILONLY : 1
32BIT : 0
Signed : 0
Related:
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…