MetadataWriter constructor
MetadataWriter({})
Constructs a new MetadataWriter instance with the specified assembly and module information.
If mvid
is omitted, a new GUID is generated for the module.
Implementation
factory MetadataWriter({
required String name,
int majorVersion = 0xFF,
int minorVersion = 0xFF,
int buildNumber = 0xFF,
int revisionNumber = 0xFF,
AssemblyFlags flags = AssemblyFlags.windowsRuntime,
Guid? mvid,
}) {
final writer = MetadataWriter._();
// This assembly.
writer._tableStream[MetadataTableId.assembly].add(
Assembly(
hashAlgId: AssemblyHashAlgorithm.sha1,
majorVersion: majorVersion,
minorVersion: minorVersion,
buildNumber: buildNumber,
revisionNumber: revisionNumber,
flags: flags,
name: writer._stringHeap.insert(p.basenameWithoutExtension(name)),
),
);
// This module.
writer._tableStream[MetadataTableId.module].add(
Module(
name: writer._stringHeap.insert(name),
mvid: writer._guidHeap.insert(mvid ?? Guid.generate()),
),
);
writer
// Some parsers will fail to read without a "mscorlib" reference implied
// by "System" types.
..writeAssemblyRef(namespace: 'System')
// The parent type of "globals" expected by most parsers.
..writeTypeDef(namespace: '', name: '<Module>');
return writer;
}