Пример #1
0
        public override void Emit()
        {
            if (loader.Corlib != null && !(loader.Corlib is AssemblyBuilder))
            {
                Builder.__SetImageRuntimeVersion(loader.Corlib.ImageRuntimeVersion, 0x20000);
            }
            else
            {
                // Sets output file metadata version when there is no mscorlib
                switch (module.Compiler.Settings.StdLibRuntimeVersion)
                {
                case RuntimeVersion.v4:
                    Builder.__SetImageRuntimeVersion("v4.0.30319", 0x20000);
                    break;

                case RuntimeVersion.v2:
                    Builder.__SetImageRuntimeVersion("v2.0.50727", 0x20000);
                    break;

                case RuntimeVersion.v1:
                    // Compiler does not do any checks whether the produced metadata
                    // are valid in the context of 1.0 stream version
                    Builder.__SetImageRuntimeVersion("v1.1.4322", 0x10000);
                    break;

                default:
                    throw new NotImplementedException();
                }
            }

            builder_extra = new AssemblyBuilderIKVM(Builder, Compiler);

            base.Emit();
        }
Пример #2
0
        //
        // Initializes the code generator
        //
        public bool Create(StaticLoader loader)
        {
            ResolveAssemblySecurityAttributes();
            var an = CreateAssemblyName();

            Builder = loader.Domain.DefineDynamicAssembly(an, AssemblyBuilderAccess.Save, Path.GetDirectoryName(file_name));

            if (loader.Corlib != null)
            {
                Builder.__SetImageRuntimeVersion(loader.Corlib.ImageRuntimeVersion, 0x20000);
            }
            else
            {
                // Sets output file metadata version when there is no mscorlib
                switch (RootContext.StdLibRuntimeVersion)
                {
                case RuntimeVersion.v4:
                    Builder.__SetImageRuntimeVersion("v4.0.30319", 0x20000);
                    break;

                case RuntimeVersion.v2:
                    Builder.__SetImageRuntimeVersion("v2.0.50727", 0x20000);
                    break;

                case RuntimeVersion.v1:
                    // Compiler does not do any checks whether the produced metadata
                    // are valid in the context of 1.0 stream version
                    Builder.__SetImageRuntimeVersion("v1.1.4322", 0x10000);
                    break;

                default:
                    throw new NotImplementedException();
                }
            }

            builder_extra = new AssemblyBuilderIKVM(Builder, Compiler);
            return(true);
        }