/// <summary> /// Creates an assembly reference from an assembly reference metadata row. /// </summary> /// <param name="parentModule">The module that contained the reference.</param> /// <param name="token">The token to initialize the reference for.</param> /// <param name="row">The metadata table row to base the assembly reference on.</param> public SerializedAssemblyReference(SerializedModuleDefinition parentModule, MetadataToken token, AssemblyReferenceRow row) : base(token) { _parentModule = parentModule ?? throw new ArgumentNullException(nameof(parentModule)); _row = row; Attributes = row.Attributes; Version = new Version(row.MajorVersion, row.MinorVersion, row.BuildNumber, row.RevisionNumber); }
public void RowEnumerationTest() { var rawRow = new uint[] { 0x0004, 0x0000, 0x0000, 0x0000, 0x00000000, 0x001A, 0x000A, 0x0000, 0x0000 }; var row = new AssemblyReferenceRow((ushort)rawRow[0], (ushort)rawRow[1], (ushort)rawRow[2], (ushort)rawRow[3], (AssemblyAttributes)rawRow[4], rawRow[5], rawRow[6], rawRow[7], rawRow[8]); RowTestUtils.VerifyRowColumnEnumeration(rawRow, row); }
/// <inheritdoc /> public MetadataToken GetAssemblyReferenceToken(AssemblyReference assembly) { AssertIsImported(assembly); var table = Metadata.TablesStream.GetTable <AssemblyReferenceRow>(TableIndex.AssemblyRef); var row = new AssemblyReferenceRow((ushort)assembly.Version.Major, (ushort)assembly.Version.Minor, (ushort)assembly.Version.Build, (ushort)assembly.Version.Revision, assembly.Attributes, Metadata.BlobStream.GetBlobIndex(assembly.PublicKeyOrToken), Metadata.StringsStream.GetStringIndex(assembly.Name), Metadata.StringsStream.GetStringIndex(assembly.Culture), Metadata.BlobStream.GetBlobIndex(assembly.HashValue)); var token = table.Add(row); AddCustomAttributes(token, assembly); return(token); }