void GatherModuleFiles() { List <string> SourceFiles = new List <string>(); string[] files = Directory.GetFiles(SourceDir, "*" + BuildCsString + ".cs", SearchOption.AllDirectories); SourceFiles.AddRange(files); FindPlatfromInterface(ref SourceFiles); const string ModuleSufix = "Module"; foreach (string s in files) { string filename = Path.GetFileNameWithoutExtension(s); string outi = filename.Replace(BuildCsString, ""); ModuleNames.Add(outi); } string[] Targetfiles = Directory.GetFiles(SourceDir, "*" + TargetCsString + ".cs", SearchOption.AllDirectories); SourceFiles.AddRange(Targetfiles); try { CompiledAssembly = CompileAssembly("BuildCsFiles.dll", SourceFiles); } catch (Exception E) { Console.WriteLine("Compile Failed with error " + E.Message); Console.Read(); Environment.Exit(1); } AppDomain.CurrentDomain.Load(CompiledAssembly.GetName()); SetupPlatfromInterface(); if (TargetRulesName.Length == 0) { TargetRulesName = DefaultTargetRulesName; } Type RulesObjectType = CompiledAssembly.GetType(TargetRulesName); if (RulesObjectType == null) { Console.WriteLine("Failed to File Target Rules \"" + TargetRulesName + "\" falling back to default"); TargetRulesName = DefaultTargetRulesName; RulesObjectType = CompiledAssembly.GetType(TargetRulesName); } if (RulesObjectType != null) { TargetRulesObject = (TargetRules)FormatterServices.GetUninitializedObject(RulesObjectType); ConstructorInfo Constructor = RulesObjectType.GetConstructor(Type.EmptyTypes); if (Constructor != null) { Constructor.Invoke(TargetRulesObject, new object[] { }); } TargetRulesObject.Resolve(); } Console.WriteLine("Targeting Windows 10 Version " + TargetRulesObject.WindowTenVersionTarget + " (" + TargetRulesObject.GetWinSDKVer() + ")"); foreach (string s in TargetRulesObject.ModuleExcludeList) { if (ModuleNames.Contains(s)) { ModuleNames.Remove(s); Console.WriteLine("Excluded Module " + s); } } const string ModuleEnd = "Module"; for (int i = 0; i < ModuleNames.Count; i++) { if (ModuleNames[i].EndsWith(ModuleEnd)) { ModuleNames[i] = ModuleNames[i].Remove(ModuleNames[i].Length - ModuleEnd.Length, ModuleEnd.Length); } } InitObjectsOfType(ModuleNames, ref NonCoreModuleObjects, CompiledAssembly, ModuleSufix); ALLModules.AddRange(NonCoreModuleObjects); }
public ModuleDef(TargetRules Rules) { }