コード例 #1
0
        //public ascx_ScriptsFolder scriptsFolder;

/*        public void addCurrentAppDomainsDllsAsReferences()
        {
            foreach(var assembly in AppDomain.CurrentDomain.GetAssemblies())
            {
                var assemblyName = Path.GetFileName(assembly.Location);
                if (false == lsExtraReferenceAssembliesToAdd.Contains(assemblyName))
                    if (assemblyName.IndexOf("JetBrains")==-1 && 
                        assemblyName.IndexOf("VisualStudio") == -1 &&
                        assemblyName.IndexOf("SMDiagnostics") == -1) // don't add these assemblies
                        lsExtraReferenceAssembliesToAdd.Add(assemblyName);

            }
        }*/


        public void compileSourceCode()
        {
            if (sourceCodeEditor.partialFileViewMode == false)

                if (this.okThread(delegate { compileSourceCode(); }))
                {
                    var lsExtraReferencesToAdd = new List<string>(); //lsExtraReferenceAssembliesToAdd.ToArray());
                    String sErrorMessages = "";
                    var compileEngine = new CompileEngine();
                    Assembly aCompiledAssembly = null;
                    if (tbExtraReferencesToAdd.Text != "")
                        lsExtraReferencesToAdd.AddRange(tbExtraReferencesToAdd.Text.Split(new[] {Environment.NewLine},
                                                                                          StringSplitOptions.
                                                                                              RemoveEmptyEntries));

                    lbSourceCode_CompilationResult.Items.Clear();
                    var exeMainClass = (rbCreateExe.Checked) ? tbMainClass.Text : "";
                    var outputAssemblyName = ""; // todo expose outputAssemblyName on GUI        

                    //DI.config.addPathToCurrentExecutableEnvironmentPathVariable(DI.config.O2TempDir);

                    sourceCodeEditor.saveSourceCode();
                    var filesToCompile = new List<String> {sourceCodeEditor.sPathToFileLoaded};
                    if (compileEngine.compileSourceFiles(filesToCompile, lsExtraReferencesToAdd.ToArray(),
                                                         ref aCompiledAssembly, ref sErrorMessages, false /*verbose*/,
                                                         exeMainClass,
                                                         outputAssemblyName))
                    {
                        // if we only have 1 class in the completed code, set tbMainClass.Text to it
                        if (aCompiledAssembly.GetTypes().Length == 1)
                            tbMainClass.Text = aCompiledAssembly.GetTypes()[0].FullName;
                        lbSourceCode_CompilationResult.ForeColor = Color.Black;
                        lbSourceCode_CompilationResult.Items.Add("No errors");
                        O2Messages.dotNetAssemblyAvailable(aCompiledAssembly.Location);
                        //if (assemblyInvoke != null)
                        //    assemblyInvoke.loadAssembly(aCompiledAssembly, cbAutoExecuteOnMethodCompile.Checked);
                    }
                    else
                    {
                        //assemblyInvoke.setControlsEnableState(false);
                        lbSourceCode_CompilationResult.ForeColor = Color.Red;
                        CompileEngine_WinForms.addErrorsListToListBox(sErrorMessages, lbSourceCode_CompilationResult);
                    }
                    if (cbAutoSaveOnCompile.Checked)
                        sourceCodeEditor.saveSourceCode();
                }
        }