private void MergeFiles(IEnumerable <string> relativeNames, string srcDir, string destDir, bool onlyIfNotExists) { foreach (var relativeName in relativeNames) { FileInfo input = new FileInfo(Path.Combine(srcDir, relativeName)); FileInfo output; if (onlyIfNotExists) { output = new FileInfo(Path.Combine(destDir, relativeName)); } else { output = new FileInfo(Path.Combine(destDir, relativeName.Split('\\').Last())); } if (onlyIfNotExists && output.Exists && !ModelProcessor.IsMarkedToOverride(output.FullName)) { continue; } Directory.CreateDirectory(output.Directory.FullName); File.WriteAllText(output.FullName, File.ReadAllText(input.FullName)); } }