public static WindowsAssembly CreateAssembly(string name, bool isDll)
{
var assembly = new WindowsAssembly();
assembly.RelocationDirectory = new ImageRelocationDirectory();
InitializeNtHeaders(assembly.NtHeaders);
InitializeNetDirectory(assembly.NetDirectory = new ImageNetDirectory());
assembly.ImportDirectory.ModuleImports.Add(CreateMscoreeImport(isDll));
var tableStream = assembly.NetDirectory.MetadataHeader.GetStream<TableStream>();
tableStream.GetTable<ModuleDefinition>().Add(new ModuleDefinition(name + (isDll ? ".dll" : ".exe"))
{
Mvid = Guid.NewGuid()
});
tableStream.GetTable<AssemblyDefinition>().Add(new AssemblyDefinition(name, new Version(1, 0, 0, 0)));
var moduleTypeDef = new TypeDefinition(string.Empty, "<Module>", null);
moduleTypeDef.MetadataRow.Column5 = 1; // TODO: remove MethodList setter.
moduleTypeDef.MetadataRow.Column6 = 1; // TODO: remove MethodList setter.
tableStream.GetTable<TypeDefinition>().Add(moduleTypeDef);
return assembly;
}