コード例 #1
0
        private static AssemblyBuilder CreateAssemblyForTypeLib(object typeLib, string asmFileName, AssemblyName asmName, bool bPrimaryInteropAssembly, bool bReflectionOnly, bool bNoDefineVersionResource)
        {
            AppDomain domain = Thread.GetDomain();
            string    text   = null;

            if (asmFileName != null)
            {
                text = Path.GetDirectoryName(asmFileName);
                if (string.IsNullOrEmpty(text))
                {
                    text = null;
                }
            }
            AssemblyBuilderAccess access;

            if (bReflectionOnly)
            {
                access = AssemblyBuilderAccess.ReflectionOnly;
            }
            else
            {
                access = AssemblyBuilderAccess.RunAndSave;
            }
            List <CustomAttributeBuilder> list = new List <CustomAttributeBuilder>();
            ConstructorInfo constructor        = typeof(SecurityRulesAttribute).GetConstructor(new Type[]
            {
                typeof(SecurityRuleSet)
            });
            CustomAttributeBuilder item = new CustomAttributeBuilder(constructor, new object[]
            {
                SecurityRuleSet.Level2
            });

            list.Add(item);
            AssemblyBuilder assemblyBuilder = domain.DefineDynamicAssembly(asmName, access, text, false, list);

            TypeLibConverter.SetGuidAttributeOnAssembly(assemblyBuilder, typeLib);
            TypeLibConverter.SetImportedFromTypeLibAttrOnAssembly(assemblyBuilder, typeLib);
            if (bNoDefineVersionResource)
            {
                TypeLibConverter.SetTypeLibVersionAttribute(assemblyBuilder, typeLib);
            }
            else
            {
                TypeLibConverter.SetVersionInformation(assemblyBuilder, typeLib, asmName);
            }
            if (bPrimaryInteropAssembly)
            {
                TypeLibConverter.SetPIAAttributeOnAssembly(assemblyBuilder, typeLib);
            }
            return(assemblyBuilder);
        }
コード例 #2
0
        private static void SetVersionInformation(AssemblyBuilder asmBldr, object typeLib, AssemblyName asmName)
        {
            string strName       = (string)null;
            string strDocString  = (string)null;
            int    dwHelpContext = 0;
            string strHelpFile   = (string)null;

            ((ITypeLib)typeLib).GetDocumentation(-1, out strName, out strDocString, out dwHelpContext, out strHelpFile);
            string product = string.Format((IFormatProvider)CultureInfo.InvariantCulture, Environment.GetResourceString("TypeLibConverter_ImportedTypeLibProductName"), (object)strName);

            asmBldr.DefineVersionInfoResource(product, asmName.Version.ToString(), (string)null, (string)null, (string)null);
            TypeLibConverter.SetTypeLibVersionAttribute(asmBldr, typeLib);
        }
コード例 #3
0
        private static void SetVersionInformation(AssemblyBuilder asmBldr, object typeLib, AssemblyName asmName)
        {
            string   arg      = null;
            string   text     = null;
            int      num      = 0;
            string   text2    = null;
            ITypeLib typeLib2 = (ITypeLib)typeLib;

            typeLib2.GetDocumentation(-1, out arg, out text, out num, out text2);
            string product = string.Format(CultureInfo.InvariantCulture, Environment.GetResourceString("TypeLibConverter_ImportedTypeLibProductName"), arg);

            asmBldr.DefineVersionInfoResource(product, asmName.Version.ToString(), null, null, null);
            TypeLibConverter.SetTypeLibVersionAttribute(asmBldr, typeLib);
        }
コード例 #4
0
        private static AssemblyBuilder CreateAssemblyForTypeLib(object typeLib, string asmFileName, AssemblyName asmName, bool bPrimaryInteropAssembly, bool bReflectionOnly, bool bNoDefineVersionResource)
        {
            AppDomain domain = Thread.GetDomain();
            string    dir    = (string)null;

            if (asmFileName != null)
            {
                dir = Path.GetDirectoryName(asmFileName);
                if (string.IsNullOrEmpty(dir))
                {
                    dir = (string)null;
                }
            }
            AssemblyBuilderAccess access  = !bReflectionOnly ? AssemblyBuilderAccess.RunAndSave : AssemblyBuilderAccess.ReflectionOnly;
            AssemblyBuilder       asmBldr = domain.DefineDynamicAssembly(asmName, access, dir, false, (System.Collections.Generic.IEnumerable <CustomAttributeBuilder>) new List <CustomAttributeBuilder>()
            {
                new CustomAttributeBuilder(typeof(SecurityRulesAttribute).GetConstructor(new Type[1] {
                    typeof(SecurityRuleSet)
                }), new object[1] {
                    (object)SecurityRuleSet.Level2
                })
            });

            TypeLibConverter.SetGuidAttributeOnAssembly(asmBldr, typeLib);
            TypeLibConverter.SetImportedFromTypeLibAttrOnAssembly(asmBldr, typeLib);
            if (bNoDefineVersionResource)
            {
                TypeLibConverter.SetTypeLibVersionAttribute(asmBldr, typeLib);
            }
            else
            {
                TypeLibConverter.SetVersionInformation(asmBldr, typeLib, asmName);
            }
            if (bPrimaryInteropAssembly)
            {
                TypeLibConverter.SetPIAAttributeOnAssembly(asmBldr, typeLib);
            }
            return(asmBldr);
        }