/// <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)); }