An EXE and a DLL contain different headers. An EXE contains an entry point while a DLL does not, though it typically contains a load address of where in memory relative to the EXE base it should be loaded. In the case of .NET assemblies, the EXE entry point references mscoree.dll!_CorExeMain, which creates the unmanaged AppDomain, loads a managed AppDomain then your assembly, and runs the entry point. A DLL will simply load into the process space but contains no entry point. While the IL module(s) contained in the assembly are basically file format-agnostic, the PE/COFF headers of the executable that contain the manifest and IL module(s) (and any other embedded files or resources) are different. This posting is provided "AS IS" with no warranties, and confers no rights. Software Design Engineer Developer Division Sustained Engineering Microsoft [My Articles] [My Blog]