예제 #1
0
        private static RuntimeAssemblyName CreateRuntimeAssemblyNameFromMetadata(
            MetadataReader reader,
            ConstantStringValueHandle name,
            ushort majorVersion,
            ushort minorVersion,
            ushort buildNumber,
            ushort revisionNumber,
            ConstantStringValueHandle culture,
            IEnumerable <byte> publicKeyOrToken,
            AssemblyFlags assemblyFlags)
        {
            AssemblyNameFlags assemblyNameFlags = AssemblyNameFlags.None;

            if (0 != (assemblyFlags & AssemblyFlags.PublicKey))
            {
                assemblyNameFlags |= AssemblyNameFlags.PublicKey;
            }
            if (0 != (assemblyFlags & AssemblyFlags.Retargetable))
            {
                assemblyNameFlags |= AssemblyNameFlags.Retargetable;
            }
            int contentType = ((int)assemblyFlags) & 0x00000E00;

            assemblyNameFlags |= (AssemblyNameFlags)contentType;

            ArrayBuilder <byte> keyOrTokenArrayBuilder = new ArrayBuilder <byte>();

            foreach (byte b in publicKeyOrToken)
            {
                keyOrTokenArrayBuilder.Add(b);
            }

            return(new RuntimeAssemblyName(
                       name.GetString(reader),
                       new Version(majorVersion, minorVersion, buildNumber, revisionNumber),
                       culture.GetStringOrNull(reader),
                       assemblyNameFlags,
                       keyOrTokenArrayBuilder.ToArray()
                       ));
        }
예제 #2
0
        private static RuntimeAssemblyName CreateRuntimeAssemblyNameFromMetadata(
            MetadataReader reader,
            ConstantStringValueHandle name,
            ushort majorVersion,
            ushort minorVersion,
            ushort buildNumber,
            ushort revisionNumber,
            ConstantStringValueHandle culture,
            IEnumerable<byte> publicKeyOrToken,
            AssemblyFlags assemblyFlags)
        {
            AssemblyNameFlags assemblyNameFlags = AssemblyNameFlags.None;
            if (0 != (assemblyFlags & AssemblyFlags.PublicKey))
                assemblyNameFlags |= AssemblyNameFlags.PublicKey;
            if (0 != (assemblyFlags & AssemblyFlags.Retargetable))
                assemblyNameFlags |= AssemblyNameFlags.Retargetable;
            int contentType = ((int)assemblyFlags) & 0x00000E00;
            assemblyNameFlags |= (AssemblyNameFlags)contentType;

            ArrayBuilder<byte> keyOrTokenArrayBuilder = new ArrayBuilder<byte>();
            foreach (byte b in publicKeyOrToken)
                keyOrTokenArrayBuilder.Add(b);

            return new RuntimeAssemblyName(
                name.GetString(reader),
                new Version(majorVersion, minorVersion, buildNumber, revisionNumber),
                culture.GetStringOrNull(reader),
                assemblyNameFlags,
                keyOrTokenArrayBuilder.ToArray()
                );
        }