public void RowEnumerationTest() { var rawRow = new uint[] { 0x00008004, 0x0001, 0x0000, 0x0000, 0x0000, 0x00000000, 0x0000, 0x0013, 0x0000 }; var row = new AssemblyDefinitionRow((AssemblyHashAlgorithm)rawRow[0], (ushort)rawRow[1], (ushort)rawRow[2], (ushort)rawRow[3], (ushort)rawRow[4], (AssemblyAttributes)rawRow[5], rawRow[6], rawRow[7], rawRow[8]); RowTestUtils.VerifyRowColumnEnumeration(rawRow, row); }
/// <summary> /// Creates an assembly definition from an assembly metadata row. /// </summary> /// <param name="dotNetDirectory">The object providing access to the underlying metadata streams.</param> /// <param name="token">The token to initialize the assembly for.</param> /// <param name="row">The metadata table row to base the assembly definition on.</param> /// <param name="manifestModule">The instance containing the manifest module definition.</param> /// <param name="readParameters">The parameters to use for reading modules.</param> public SerializedAssemblyDefinition(IDotNetDirectory dotNetDirectory, MetadataToken token, AssemblyDefinitionRow row, SerializedModuleDefinition manifestModule, ModuleReadParameters readParameters) : base(token) { _dotNetDirectory = dotNetDirectory ?? throw new ArgumentNullException(nameof(dotNetDirectory)); _row = row; _manifestModule = manifestModule ?? throw new ArgumentNullException(nameof(manifestModule)); _readParameters = readParameters ?? throw new ArgumentNullException(nameof(readParameters)); _parentModule = manifestModule; Attributes = row.Attributes; Version = new Version(row.MajorVersion, row.MinorVersion, row.BuildNumber, row.RevisionNumber); HashAlgorithm = row.HashAlgorithm; }
/// <summary> /// Adds an assembly, its entire manifest module, and all secondary module file references, to the buffer. /// </summary> /// <param name="assembly">The assembly to add.</param> public void DefineAssembly(AssemblyDefinition assembly) { var table = Metadata.TablesStream.GetTable <AssemblyDefinitionRow>(TableIndex.Assembly); var row = new AssemblyDefinitionRow( assembly.HashAlgorithm, (ushort)assembly.Version.Major, (ushort)assembly.Version.Minor, (ushort)assembly.Version.Build, (ushort)assembly.Version.Revision, assembly.Attributes, Metadata.BlobStream.GetBlobIndex(assembly.PublicKey), Metadata.StringsStream.GetStringIndex(assembly.Name), Metadata.StringsStream.GetStringIndex(assembly.Culture)); var token = table.Add(row); AddCustomAttributes(token, assembly); AddSecurityDeclarations(token, assembly); }