/// <summary>
        /// Get the assembly details required to configure the compiler
        /// for the names and search path of the required assemblies
        /// </summary>
        /// <param name="additionalAssemblyNames">The additional
        /// assembly names to be referenced by the code being compiled</param>
        /// <returns>A tuple containing the comma separated directory
        /// search path for each of the assemblies, and a list of
        /// each of the assembly names</returns>
        private Tuple <string, IList <string> > GetAssemblyDetails(string[] additionalAssemblyNames)
        {
            string ver   = string.Format("{0}.{1}.{2}", Environment.Version.Major, Environment.Version.MajorRevision, Environment.Version.Build);
            string exDir = string.Format(@"C:\WINDOWS\Microsoft.NET\Framework\v{0}", ver);

            Int32          additionalCount = additionalAssemblyNames == null ? 0 : additionalAssemblyNames.Count();
            IList <string> assemblyNames   = new List <string>();

            assemblyNames.AddRange(AssemblyNames);
            if (additionalCount > 0)
            {
                assemblyNames.AddRange(additionalAssemblyNames);
            }

            string assemblyPath = exDir;

            if (additionalAssemblyNames != null)
            {
                foreach (string assemblyName in additionalAssemblyNames)
                {
                    Assembly ass = AssemblyUtils.GetAssemblyByName(assemblyName);
                    if (ass != null)
                    {
                        assemblyPath += "," + ass.Location;
                    }
                }
            }
            return(new Tuple <string, IList <string> >(assemblyPath, assemblyNames));
        }