What’s in your manifest file?

The manifest is the heart and soul of managed code.  The manifest contains all the metadata that describes an assembly and its modules.  Manifest files can be very complex, but all have the basic, similar components.  The following is the information contained in the manifest file.

  • Contents – contains information about the external types and resources exposed by the assembly in two metadata tables: ExportedType and ManifestResource.
  • Custom attributes – contained in the CustomAttribute metadata table, this has information that compilers use.
  • Dependencies – contained in three metadata tables: AssemblyRef, File and ModuleRef
    • Assemblies referenced by this assembly
    • Modules contained within this assembly
  • Identity – contains the following information about the assembly in two metadata tables: Module and Assembly
    • Name
    • Version number
    • Culture (optional) if the assembly contains localized resources
    • Language
    • Processor architecture
    • Public key (optional) if the assembly is strongly named
    • Type
  • Requested permissions – contains information about the permissions for the assembly.  If specific permissions exist for classes and methods within the assembly, this information is also contained here, in the metadata table DeclSecurity.

Using ILDasm, you can view the manifest information for any managed DLL. Here is the manifest information for NDocGui:

ILDasm Manifest for NDocGui.exe

.assembly extern System.Windows.Forms
{
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
  .ver 1:0:5000:0
}
.assembly extern mscorlib
{
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
  .ver 1:0:5000:0
}
.assembly extern System
{
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
  .ver 1:0:5000:0
}
.assembly extern NDoc.Core
{
  .publickeytoken = (B9 89 65 12 F2 8C 0F 09 )                         // ..e…..
  .ver 1:3:1746:0
}
.assembly extern System.Drawing
{
  .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A )                         // .?_….:
  .ver 1:0:5000:0
}
.assembly extern NDoc.VisualStudio
{
  .publickeytoken = (B9 89 65 12 F2 8C 0F 09 )                         // ..e…..
  .ver 1:3:1746:0
}
.assembly NDocGui
{
  .custom instance void [mscorlib]System.Reflection.AssemblyCompanyAttribute::.ctor(string) = ( 01 00 1B 68 74 74 70 3A 2F 2F 6E 64 6F 63 2E 73   // …http://ndoc.s
                                                                                                6F 75 72 63 65 66 6F 72 67 65 2E 6E 65 74 00 00 ) // ourceforge.net..
  .custom instance void [mscorlib]System.Runtime.InteropServices.ComVisibleAttribute::.ctor(bool) = ( 01 00 00 00 00 )
  .custom instance void [mscorlib]System.Reflection.AssemblyConfigurationAttribute::.ctor(string) = ( 01 00 14 6E 65 74 2D 31 2E 31 2E 77 69 6E 33 32   // …net-1.1.win32
                                                                                                      3B 20 62 65 74 61 32 00 00 )                      // ; beta2..
  .custom instance void [mscorlib]System.Reflection.AssemblyKeyNameAttribute::.ctor(string) = ( 01 00 00 00 00 )
  .custom instance void [mscorlib]System.Reflection.AssemblyKeyFileAttribute::.ctor(string) = ( 01 00 08 4E 44 6F 63 2E 73 6E 6B 00 00 )          // …NDoc.snk..
  .custom instance void [mscorlib]System.Reflection.AssemblyDelaySignAttribute::.ctor(bool) = ( 01 00 00 00 00 )
  .custom instance void [mscorlib]System.Reflection.AssemblyDescriptionAttribute::.ctor(string) = ( 01 00 41 57 69 6E 66 6F 72 6D 20 75 73 65 72 20   // ..AWinform user
                                                                                                    69 6E 74 65 72 66 61 63 65 20 66 6F 72 20 74 68   // interface for th
                                                                                                    65 20 4E 44 6F 63 20 63 6F 64 65 20 64 6F 63 75   // e NDoc code docu
                                                                                                    6D 65 6E 74 61 74 69 6F 6E 20 67 65 6E 65 72 61   // mentation genera
                                                                                                    74 6F 72 2E 00 00 )                               // tor…
  .custom instance void [mscorlib]System.Reflection.AssemblyTitleAttribute::.ctor(string) = ( 01 00 08 4E 44 6F 63 20 47 75 69 00 00 )          // …NDoc Gui..
  .custom instance void [mscorlib]System.CLSCompliantAttribute::.ctor(bool) = ( 01 00 01 00 00 )
  .custom instance void [mscorlib]System.Reflection.AssemblyInformationalVersionAttribute::.ctor(string) = ( 01 00 03 31 2E 33 00 00 )                         // …1.3..
  .custom instance void [mscorlib]System.Reflection.AssemblyTrademarkAttribute::.ctor(string) = ( 01 00 00 00 00 )
  .custom instance void [mscorlib]System.Reflection.AssemblyCopyrightAttribute::.ctor(string) = ( 01 00 00 00 00 )
  .custom instance void [mscorlib]System.Reflection.AssemblyProductAttribute::.ctor(string) = ( 01 00 04 4E 44 6F 63 00 00 )                      // …NDoc..
  .publickey = (00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00   // .$…………..
                00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00   // .$..RSA1……..
                EF CA D3 F5 72 01 1A 8B 14 B0 1F 13 7C D3 3C C2   // ….r…….|.<.
                1B 00 8F DE D9 7B A2 8D AB 82 69 B4 4F 96 31 95   // …..{….i.O.1.
                81 6C D7 59 33 86 77 61 0D 1E 6E F7 6F 56 CC 10   // .l.Y3.wa..n.oV..
                9F 32 90 F2 39 EA 52 26 A9 71 1A DE F4 12 CF E5   // .2..9.R&.q……
                45 12 8F CB 15 7E 9E 8A 4E 63 D2 09 85 55 18 9D   // E….~..Nc…U..
                C9 22 B8 1D C3 65 F4 02 15 B8 38 92 E1 33 DF A8   // .”…e….8..3..
                4D EE 1C B5 7C 97 E0 DE 9A 76 01 10 94 7A 88 9F   // M…|….v…z..
                35 98 85 15 CB 60 21 FD 58 E0 9D DB FB E8 EB B4 ) // 5….`!.X…….
  .hash algorithm 0×00008004
  .ver 1:3:1746:0
}
.mresource public NDoc.Gui.RuntimePropertyGrid.resources
{
}
.mresource public NDoc.Gui.ErrorForm.resources
{
}
.mresource public NDoc.Gui.MainForm.resources
{
}
.mresource public NDoc.Gui.graphics.OpenFile.ico
{
}
.mresource public NDoc.Gui.WarningForm.resources
{
}
.mresource public NDoc.Gui.AssemblySlashDocForm.resources
{
}
.mresource public NDoc.Gui.AboutForm.resources
{
}
.mresource public NDoc.Gui.SolutionForm.resources
{
}
.mresource public NDoc.Gui.graphics.View.ico
{
}
.mresource public NDoc.Gui.graphics.Build.ico
{
}
.mresource public NDoc.Gui.graphics.OpenSolution.ico
{
}
.mresource public NDoc.Gui.graphics.New.ico
{
}
.mresource public NDoc.Gui.graphics.Save.ico
{
}
.mresource public NDoc.Gui.About.rtf
{
}
.mresource public NDoc.Gui.graphics.NDoc.ico
{
}
.mresource public NDoc.Gui.OptionsForm.resources
{
}
.mresource public NDoc.Gui.NamespaceSummariesForm.resources
{
}
.mresource public NDoc.Gui.graphics.Cancel.ico
{
}
.mresource public NDoc.Gui.TraceWindowControl.resources
{
}
.mresource public NDoc.Gui.HeaderGroupBox.resources
{
}
.module NDocGui.exe
// MVID: {2F629DA1-9AFF-4AB0-9F35-252BC6B5D040}
.imagebase 0×00400000
.subsystem 0×00000002
.file alignment 4096

.corflags 0×00000009
// Image base: 0x02ec0000


Here is the xml manifest file from NDocGui:


XML Manifest File for NDocGui<?xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”?>
<assembly xmlns=”urn:schemas-microsoft-com:asm.v1″ manifestVersion=”1.0″>
<dependency>
   <dependentAssembly>
      <assemblyIdentity
           type=”win32″
           name=”Microsoft.Windows.Common-Controls” version=”6.0.0.0″
           language=”*”
           processorArchitecture=”*”
           publicKeyToken=”6595b64144ccf1df”
      />
   </dependentAssembly>
</dependency>
</assembly>

This entry was posted in .Net Development. Bookmark the permalink. Follow any comments here with the RSS feed for this post.

2 Responses to What’s in your manifest file?

  1. xuhckqfe says:

    hodbxcfx pkxkjilb http://rqpzgjld.com qmtgkvrv nngqkipd [URL=http://fahxtvnr.com]sdztsehv[/URL]

Leave a Reply