using System; using System.IO; using System.Text.RegularExpressions; using System.Windows.Forms; namespace AdjustBuildRevision { class Program { static void Main(string[] args) { // args[0] - FileName try { FileInfo fi = new FileInfo(args[0]); DateTime dtLatest = GetLatestDateTime(fi.Directory.Parent,fi.LastWriteTime); if (fi.Exists) { StreamReader sr = fi.OpenText(); string content = sr.ReadToEnd(); sr.Close(); string[] seps = { "\r\n" }; string[] lines = content.Split(seps, StringSplitOptions.None); bool changed = false; for (int i = 0; i < lines.Length;i++ ) { string line = lines[i]; string outline = line; if (line.Contains("AssemblyVersion") || line.Contains("AssemblyFileVersion")) { // Allow for setting build revision on either proms or the roeditor: if (Directory.GetCurrentDirectory().ToUpper().Contains("REFOBJ")) outline = Regex.Replace(line, @"([0-9]*)\.([0-9]*)\.([0-9]*)\.([0-9]*)""\)", DateTime.Now.ToString("2.4.yyMM.dHH") + "\")"); else outline = Regex.Replace(line, @"([0-9]*)\.([0-9]*)\.([0-9]*)\.([0-9]*)""\)", DateTime.Now.ToString("2.3.yyMM.dHH") + "\")"); if (outline != line) { Console.WriteLine("Before: '{0}'", line); Console.WriteLine("After: '{0}'", outline); lines[i] = outline; changed = true; } else { Console.WriteLine("No change: '{0}'", line); } } } if (changed) { if (!fi.IsReadOnly) fi.IsReadOnly = false; StreamWriter sw = fi.CreateText(); foreach (string line in lines) sw.WriteLine(line); sw.Close(); } } else { MessageBox.Show($"File {fi.FullName} does not exist"); } } catch (Exception ex) { MessageBox.Show(ex.Message, ex.GetType().FullName, MessageBoxButtons.OK, MessageBoxIcon.Error); } } private static DateTime GetLatestDateTime(DirectoryInfo di, DateTime dtCheck) { DateTime dtMax = dtCheck; FileInfo[] myFiles = di.GetFiles(); foreach(FileInfo myFile in myFiles) { DateTime dt = myFile.LastWriteTime; if(dtMax < dt) dtMax = dt; } DirectoryInfo[] myFolders = di.GetDirectories(); foreach (DirectoryInfo diChild in myFolders) { DateTime dtChild = GetLatestDateTime(diChild,dtCheck); if(dtChild > dtMax) dtMax = dtChild; } return dtMax; } } }