I'm happy to announce the availability of AssemblyInfo version 2.0. AssemblyInfo is now a Reflector Add-in., adding a new language to Reflector.
In addition to what reflector already shows you, it will show
- General file information, such as size, creation date and last modified date
- All file version information embedded in the exe or dll
- The Authenticode X509 certificate used to signe the file, if any
- All useful information from the COFF and PE headers
- The sections and their characteristics,
- The native dll imports
- All useful information from the CLR header, if any (it works on unmanaged files too)
AssemblyInfo will also show you all information on other .NET metadata, such as types and their members, in a way as close as possible to the internal .NET structures. It's like looking at metadata the way the CLR looks at it, at least that was my intention ;-).
Download AssemblyInfo, unzip it to a location of your choice, and add it to Reflector via the View menu, Add-ins option. Select the AssemblyInfo language from the language dropdown and you're ready to go.
For example, here's the output on the AssemblyInfo.exe module:
// Module AssemblyInfo.exe
File:
Location : C:\Program Files\Reflector\AssemblyInfo.exe
Size : 49,5 KB
Created : 15/12/2007 13:20:24
Modified : 15/01/2008 23:12:42
Attributes:
UnverifiableCodeAttribute()
File Version Info:
Type: : Executable (EXE)
File Version: : 2.0.0.0
Product Version: : 2.0.0.0
Flags: : None
Language: Language Neutral, Codepage 1200:
CompanyName : Kris Vandermotten
FileDescription : AssemblyInfo
FileVersion : 2.0.0.0
InternalName : AssemblyInfo.exe
LegalCopyright : Copyright (c) 2007, 2008 Kris Vandermotten
OriginalFilename : AssemblyInfo.exe
ProductName : AssemblyInfo
ProductVersion : 2.0.0.0
Assembly Version : 2.0.0.0
Authenticode X509 Certificate:
none
COFF Header:
Type : Executable (EXE)
Memory : 32 bit
Target machine : I386
Timestamp : 15/01/2008 23:12:42
Characteristics : ExecutableImage, LineNumsStripped, LocalSymsStripped, Machine32Bit
PE Header:
Kind : 32 bit PE file
Linker Version : 8.0
Image Base Address : 0x00400000
Section Alignment : 8192
File Alignment : 512
OS Version : 4.0
Image Version : 0.0
Subsystem : WINDOWS_CUI
Subsystem Version : 4.0
Stack Reserve : 0x00100000 (1 MB)
Stack Commit : 0x00001000 (4 KB)
Heap Reserve : 0x00100000 (1 MB)
Heap Commit : 0x00001000 (4 KB)
Sections:
.text : 47 KB (ContainsCode, MemExecutable, MemReadable)
.rsrc : 1,5 KB (ContainsInitializedData, MemReadable)
.reloc : 512 bytes (ContainsInitializedData, MemDiscardable, MemReadable)
Native imports:
mscoree.dll
CLR header:
Runtime version : 2.5 (v2.0.50727)
Flags : IlOnly, StrongNameSigned
MetaData : 30,37 KB
Managed Resources : 0 bytes
VTableFixups : 0 bytes
Native Export Thunks: 0 bytes
Version GUID : 3a1cd2b7-7cb5-4c65-8256-bd1e5a783e56
I could not have written this without the book Expert .NET 2.0 IL Assembler by Serge Lidin, a book that I can highly recommend if you want to know more about the inner workings of .NET.
Enjoy, and let me know what you think.