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(); }
// // 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); }