public override string CreateScript(Project project) { var projDir = Path.GetDirectoryName(project.CSProj); var outDir = Path.GetDirectoryName(project.OutFile); var copies = project.Copies.Select(x => Tuple.Create( Path.Combine(projDir, x), Path.Combine(outDir, x))); var allOutDirs = copies.Select(x => Path.GetDirectoryName(x.Item2)).Distinct(); return string.Format( "{0}\r\n\r\ncall mcs {1} -unsafe {2} -out:{3} -d:DEBUG -d:TRACE\r\n\r\n{4}\r\n\r\n{5}", CreateMkDirs(new[] { outDir }), CreateCompileArgs(project), CreateRefArg(project), project.OutFile, CreateMkDirs(allOutDirs), CreateCopies(copies)); }
public abstract string CreateScript(Project project);
static void Main(string[] args) { var projects = args[0] .Split(',') .Select(LoadProject) .ToArray(); var outFile = args[1]; var script = args[2]; var mainProject = projects.First(); var asmInfo = @"\assemblyinfo.cs"; var assemblyInfo = mainProject.Compile .FirstOrDefault(x => x.ToLower().EndsWith(asmInfo)); var mergedReference = projects.SelectMany(x => x.Reference).Distinct(); var mergedCompile = projects .SelectMany(x => x.Compile) .Where(x => !x.ToLower().EndsWith(asmInfo) || x == assemblyInfo) .Distinct(); var mergedCopies = projects.SelectMany(x => x.Copies).Distinct(); var mergedProject = new Project( mainProject.CSProj, mergedReference, mergedCompile, outFile, new [] { "MONO", "DEBUG", "TRACE" }, mergedCopies); var generator = new WindowsBuildScriptGenerator(); var cmd = generator.CreateScript(mergedProject); File.WriteAllText(script, cmd); }
static string CreateRefArg(Project project) { return string.Join(" ", project.Reference.Select(x => "-r:" + x)); }
static string CreateCompileArgs(Project project) { return string.Join(" ", project.Compile.Select(x => "\"" + x + "\"")); }