Example #1
0
    // this method creates a MetaData resolver and loads all the assemblies into
    // it
    private void InitializeResolver()
    {
        resolver = new MetaDataResolver(assemblies, new ArrayList(), new DateTime(),
                                        false, false);

        MetaDataResolver.ResolveCustomAttributes(
            new MetaDataResolver[] { resolver });
    }
Example #2
0
    public static void Main(String[] args)
    {
        Console.WriteLine("MkMsil:");

        ArrayList streams = new ArrayList();

        foreach (string arg in args)
        {
            streams.Add(new MetaDataResolver.LoadedStream(arg,
                                                          Path.GetFullPath(arg),
                                                          new FileStream(arg,
                                                                         FileMode.Open,
                                                                         FileAccess.Read,
                                                                         FileShare.Read)));
        }

        Console.WriteLine("-----------------------------------------------------------------");
        MetaDataResolver resolver = new MetaDataResolver(streams, false, false, false);

        Console.WriteLine("-----------------------------------------------------------------");
        MetaDataResolver.ResolveCustomAttributes(new MetaDataResolver[] { resolver });
        Console.WriteLine("-----------------------------------------------------------------");

        MetaDataTypeDefinition shellCommandAttribute
            = resolver.ResolveName("Microsoft.Singularity.Shell.ShellCommandAttribute");

        Console.WriteLine("{0}", shellCommandAttribute);
        Console.WriteLine("-----------------------------------------------------------------");

#if DONT
        foreach (MetaData metadata in resolver.MetaDataList)
        {
            DumpMetaData(metadata);
        }
#endif

        foreach (MetaData metadata in resolver.MetaDataList)
        {
            foreach (MetaDataTypeDefinition type in metadata.TypeDefs)
            {
                foreach (MetaDataMethod method in type.Methods)
                {
                    MetaDataCustomAttribute attribute
                        = MethodFindAttribute(method, shellCommandAttribute);

                    if (attribute != null)
                    {
                        Console.WriteLine("new ShellCommand(\"{0}\", \"{1}\", new Command({2})),",
                                          attribute.FixedArgs[0],
                                          attribute.FixedArgs[1],
                                          method.Name);
                    }
                }
            }
        }
    }
Example #3
0
    private void ProcessAssembly(ArrayList infiles)
    {
        MetaDataResolver resolver =
            new MetaDataResolver(infiles, new ArrayList(), new DateTime(), false, false);

        MetaDataResolver.ResolveCustomAttributes(new MetaDataResolver[] { resolver });
        foreach (MetaData md in resolver.MetaDataList)
        {
            // Assume that if we are processing an assembly, it will contain tests
            string name   = md.Name;
            string prefix = name.Substring(0, name.LastIndexOf('.'));       // trim extension
            string module = prefix.Substring(prefix.LastIndexOf('\\') + 1); // extract filename
            ProcessAssembly(md);
        }
    }
Example #4
0
    private static void ProcessAssemblies(XmlTextWriter oo, ArrayList infiles)
    {
        MetaDataResolver resolver =
            new MetaDataResolver(infiles, new ArrayList(), new DateTime(), false, false);

        MetaDataResolver.ResolveCustomAttributes(new MetaDataResolver[] { resolver });
        foreach (MetaData md in resolver.MetaDataList)
        {
            // Assume that if we are processing an assembly, it will contain tests
            string name = md.Name;
            string pkg;
            string assembly = Tail(name, '\\', out pkg);                    // extract filename
            string module   = assembly.Substring(0, assembly.IndexOf('.')); // trim extension
            oo.WriteStartElement("Module");
            oo.WriteAttributeString("Name", module);
            ProcessAssembly(oo, md);
            oo.WriteEndElement();
        }
    }