public override void Run() { taskInterface.SetStatus("Deleting Old Src"); if (Directory.Exists(srcDir)) { Directory.Delete(srcDir, true); } var clientModule = serverOnly ? null : ReadModule(TerrariaPath, clientVersion); var serverModule = ReadModule(TerrariaServerPath, serverVersion); var mainModule = serverOnly ? serverModule : clientModule; projectDecompiler = new ExtendedProjectDecompiler { Settings = decompilerSettings, AssemblyResolver = new EmbeddedAssemblyResolver(mainModule, mainModule.Reader.DetectTargetFrameworkId()) }; var items = new List <WorkItem>(); var files = new HashSet <string>(); var resources = new HashSet <string>(); if (!serverOnly) { AddModule(clientModule, projectDecompiler.AssemblyResolver, items, files, resources); } AddModule(serverModule, projectDecompiler.AssemblyResolver, items, files, resources, serverOnly ? null : "SERVER"); items.Add(WriteProjectFile(mainModule, files, resources)); ExecuteParallel(items); }
public override void Run() { taskInterface.SetStatus("Deleting Old Src"); if (Directory.Exists(srcDir)) { Directory.Delete(srcDir, true); } var clientModule = serverOnly ? null : ReadModule(TerrariaPath, clientVersion); var serverModule = ReadModule(TerrariaServerPath, serverVersion); var mainModule = serverOnly ? serverModule : clientModule; projectDecompiler = new ExtendedProjectDecompiler { Settings = decompilerSettings, AssemblyResolver = new EmbeddedAssemblyResolver(mainModule, mainModule.Reader.DetectTargetFrameworkId()) }; var items = new List <WorkItem>(); var files = new HashSet <string>(); var resources = new HashSet <string>(); var exclude = new List <string>(); // Decompile embedded library sources directly into Terraria project. Treated the same as Terraria source var decompiledLibraries = new [] { "ReLogic" }; foreach (var lib in decompiledLibraries) { var libRes = mainModule.Resources.Single(r => r.Name.EndsWith(lib + ".dll")); AddEmbeddedLibrary(libRes, projectDecompiler.AssemblyResolver, items); exclude.Add(GetOutputPath(libRes.Name, mainModule)); } if (!serverOnly) { AddModule(clientModule, projectDecompiler.AssemblyResolver, items, files, resources, exclude); } AddModule(serverModule, projectDecompiler.AssemblyResolver, items, files, resources, exclude, serverOnly ? null : "SERVER"); items.Add(WriteTerrariaProjectFile(mainModule, files, resources, decompiledLibraries)); items.Add(WriteCommonConfigurationFile()); #if AUTO ExecuteParallel(items, true, 1); return; #endif ExecuteParallel(items); }