/// <summary> /// Creates a hash collection that represents the state of all modules in this list. If /// a module has no current output or is missing files then a null collection will be returned /// </summary> /// <param name="Modules"></param> /// <returns></returns> private static HashCollection HashModules(IEnumerable <string> Modules, bool WarnOnFailure = true) { HashCollection Hashes = new HashCollection(); foreach (string Module in Modules) { // this project is built by the AutomationTool project that the RunUAT script builds so // it will always be newer than was last built if (Module.Contains("AutomationUtils.Automation")) { continue; } CsProjectInfo Proj; Dictionary <string, string> Properties = new Dictionary <string, string>(); Properties.Add("Platform", "AnyCPU"); Properties.Add("Configuration", "Development"); FileReference ModuleFile = new FileReference(Module); if (!CsProjectInfo.TryRead(ModuleFile, Properties, out Proj)) { if (WarnOnFailure) { Log.TraceWarning("Failed to read file {0}", ModuleFile); } return(null); } if (!Hashes.AddCsProjectInfo(Proj, HashCollection.HashType.MetaData)) { if (WarnOnFailure) { Log.TraceWarning("Failed to hash file {0}", ModuleFile); } return(null); } } return(Hashes); }