public static string EmitAssemblyFromResource(string resourceName, Action <string> sourceHandler, Assembly[] references)
        {
            string assemblyFileName = Path.Combine(ShellUtilities.GetTempPath(), resourceName + (Debug.Value ? ".Debug.dll" : ".dll"));
            string sourceFileName   = Path.Combine(ShellUtilities.GetTempPath(), resourceName);

            File.WriteAllText(sourceFileName, ResourceServices.GetResourceAsString(resourceName));
            DeleteAssemblyAndPdb(assemblyFileName);
            EmitAssembly(assemblyFileName, references, sourceFileName);

            sourceHandler(sourceFileName);

            return(assemblyFileName);
        }