protected virtual string EmitAssemblyFromResource(string resource, Assembly[] references)
        {
            CopyDependenciesToTemp();
            string resourceName = ResourceServices.CompleteResourceName(GetType(), resource);

            return(CompilationServices.EmitAssemblyFromResource(resourceName, references));
        }
        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);
        }
        private string CompileAndInstrumentCFAssembly(string version)
        {
            var assemblyPath = string.Empty;

            CompilationServices.ExtraParameters.Using(
                "/nostdlib+",
                delegate
            {
                assemblyPath =
                    CompilationServices.EmitAssemblyFromResource(
                        ResourceServices.CompleteResourceName(GetType(), "CFInstrumentationSubject"),
                        ReferencesFor(version));

                Db4oTool.Program.Run(ProgramOptionsFor(assemblyPath));
            });

            return(assemblyPath);
        }