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