UnityEditor.MonoAssemblyStripping.GenerateBlackListTypeXML C# (CSharp) Method

GenerateBlackListTypeXML() private static method

private static GenerateBlackListTypeXML ( TextWriter w, IList types, List baseTypes ) : void
w System.IO.TextWriter
types IList
baseTypes List
return void
        private static void GenerateBlackListTypeXML(TextWriter w, IList<TypeDefinition> types, List<string> baseTypes)
        {
            if (types != null)
            {
                IEnumerator<TypeDefinition> enumerator = types.GetEnumerator();
                try
                {
                    while (enumerator.MoveNext())
                    {
                        TypeDefinition current = enumerator.Current;
                        if (current != null)
                        {
                            foreach (string str in baseTypes)
                            {
                                if (DoesTypeEnheritFrom(current, str))
                                {
                                    w.WriteLine("<type fullname=\"{0}\" preserve=\"all\"/>", current.FullName);
                                    break;
                                }
                            }
                            GenerateBlackListTypeXML(w, current.NestedTypes, baseTypes);
                        }
                    }
                }
                finally
                {
                    if (enumerator == null)
                    {
                    }
                    enumerator.Dispose();
                }
            }
        }

Usage Example

        public static string GenerateBlackList(string librariesFolder, RuntimeClassRegistry usedClasses, string[] allAssemblies)
        {
            string text = "tmplink.xml";

            usedClasses.SynchronizeClasses();
            using (TextWriter textWriter = new StreamWriter(Path.Combine(librariesFolder, text)))
            {
                textWriter.WriteLine("<linker>");
                textWriter.WriteLine("<assembly fullname=\"UnityEngine\">");
                foreach (string current in usedClasses.GetAllManagedClassesAsString())
                {
                    textWriter.WriteLine(string.Format("<type fullname=\"UnityEngine.{0}\" preserve=\"{1}\"/>", current, usedClasses.GetRetentionLevel(current)));
                }
                textWriter.WriteLine("</assembly>");
                DefaultAssemblyResolver defaultAssemblyResolver = new DefaultAssemblyResolver();
                defaultAssemblyResolver.AddSearchDirectory(librariesFolder);
                for (int i = 0; i < allAssemblies.Length; i++)
                {
                    string             path = allAssemblies[i];
                    AssemblyDefinition assemblyDefinition = defaultAssemblyResolver.Resolve(Path.GetFileNameWithoutExtension(path), new ReaderParameters
                    {
                        AssemblyResolver = defaultAssemblyResolver
                    });
                    textWriter.WriteLine("<assembly fullname=\"{0}\">", assemblyDefinition.Name.Name);
                    MonoAssemblyStripping.GenerateBlackListTypeXML(textWriter, assemblyDefinition.MainModule.Types, usedClasses.GetAllManagedBaseClassesAsString());
                    textWriter.WriteLine("</assembly>");
                }
                textWriter.WriteLine("</linker>");
            }
            return(text);
        }
All Usage Examples Of UnityEditor.MonoAssemblyStripping::GenerateBlackListTypeXML