예제 #1
0
        /// <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);
        }