/// <summary>
        /// Call Ngen with executeQueuedItems parameters to make sure that all assemblies in the queue have been processed
        /// </summary>
        /// <param name="arch">64 bit or 32 bit</param>
        private static void NgenQueuedBinaries(NetFXVerifier.FrameworkArch arch)
        {
            string ngenPath = GetNgenPath(arch);

            // run ngen
            Tool ngen = new Tool(ngenPath, " executeQueuedItems ");

            ngen.WorkingDirectory = Environment.CurrentDirectory;
            Result result = ngen.Run();

            Console.WriteLine(result.ToString());
        }
        /// <summary>
        /// Find the latest Ngen.exe to use
        /// </summary>
        /// <param name="arch">64 bit or 32 bit</param>
        /// <returns>Path to the latest ngen.exe</returns>
        private static string GetNgenPath(NetFXVerifier.FrameworkArch arch)
        {
            string frameworkFolderName;

            if (NetFXVerifier.FrameworkArch.x86 == arch)
            {
                frameworkFolderName = Environment.ExpandEnvironmentVariables(@"%windir%\Microsoft.NET\Framework");
            }
            else if (NetFXVerifier.FrameworkArch.x64 == arch)
            {
                frameworkFolderName = Environment.ExpandEnvironmentVariables(@"%windir%\Microsoft.NET\Framework64");
            }
            else
            {
                return(null);
            }

            DirectoryInfo frameworkFolder = new DirectoryInfo(frameworkFolderName);

            FileInfo[] ngenFileList = frameworkFolder.GetFiles("ngen.exe", SearchOption.AllDirectories);

            if (null == ngenFileList || ngenFileList.Length < 1)
            {
                return(null);
            }

            FileInfo latestNgenFile = ngenFileList[0];
            string   version        = FileVersionInfo.GetVersionInfo(latestNgenFile.FullName).ProductVersion;

            foreach (FileInfo ngenFile in ngenFileList)
            {
                if (FileVersionInfo.GetVersionInfo(ngenFile.FullName).ProductVersion.CompareTo(version) > 0)
                {
                    latestNgenFile = ngenFile;
                    version        = FileVersionInfo.GetVersionInfo(ngenFile.FullName).ProductVersion;
                }
            }

            return(latestNgenFile.FullName);
        }