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);
        }
示例#2
0
        /// <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;
        }
示例#3
0
        /// <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);
        }