예제 #1
0
        internal /*public*/ void GenerateCodeModelForBatch(ICodeGenerator generator, StringResourceBuilder stringResourceBuilder)
        {
            _fBatchMode            = true;
            _generator             = generator;
            _stringResourceBuilder = stringResourceBuilder;

            // Build the data tree that needs to be compiled
            BuildSourceDataTree();
        }
 internal CodeCompileUnit GetCodeDomTree(CodeDomProvider codeDomProvider, StringResourceBuilder stringResourceBuilder, VirtualPath virtualPath)
 {
     this._codeDomProvider       = codeDomProvider;
     this._stringResourceBuilder = stringResourceBuilder;
     this._virtualPath           = virtualPath;
     if (!this.BuildSourceDataTree())
     {
         return(null);
     }
     if (this.Parser.RootBuilder != null)
     {
         this.Parser.RootBuilder.OnCodeGenerationComplete();
     }
     return(this._codeCompileUnit);
 }
예제 #3
0
        /// <include file='doc\BaseCompiler.uex' path='docs/doc[@for="BaseCompiler.GetCompiledType"]/*' />
        /// <devdoc>
        ///
        /// </devdoc>
        protected Type GetCompiledType()
        {
            // Instantiate an ICompiler based on the language
            CodeDomProvider codeProvider = (CodeDomProvider)HttpRuntime.CreatePublicInstance(
                CompilerInfo.CompilerType);
            ICodeCompiler compiler = codeProvider.CreateCompiler();

            _generator = codeProvider.CreateGenerator();

            _stringResourceBuilder = new StringResourceBuilder();

            // Build the data tree that needs to be compiled
            BuildSourceDataTree();

            // Create the resource file if needed
            if (_stringResourceBuilder.HasStrings)
            {
                string resFileName = _compilParams.TempFiles.AddExtension("res");
                _stringResourceBuilder.CreateResourceFile(resFileName);
                CompilParams.Win32Resource = resFileName;
            }

            // Compile into an assembly
            CompilerResults results;

            try {
                results = codeProvider.CreateCompiler().CompileAssemblyFromDom(_compilParams, _sourceData);
            }
            catch (Exception e) {
                throw new HttpUnhandledException(HttpRuntime.FormatResourceString(SR.CompilationUnhandledException, codeProvider.GetType().FullName), e);
            }

            string fullTypeName = _sourceDataNamespace.Name + "." + _sourceDataClass.Name;

            ThrowIfCompilerErrors(results, codeProvider, _sourceData, null, null);

            // After the compilation, update the list of assembly dependencies to be what
            // the assembly actually needs.
            Parser.AssemblyDependencies = Util.GetReferencedAssembliesHashtable(
                results.CompiledAssembly);

            // Get the type from the assembly
            return(results.CompiledAssembly.GetType(fullTypeName, true /*throwOnFail*/));
        }
예제 #4
0
        internal /*public*/ CodeCompileUnit GetCodeDomTree(CodeDomProvider codeDomProvider,
                                                           StringResourceBuilder stringResourceBuilder, VirtualPath virtualPath)
        {
            Debug.Assert(_codeDomProvider == null && _stringResourceBuilder == null);

            _codeDomProvider       = codeDomProvider;
            _stringResourceBuilder = stringResourceBuilder;
            _virtualPath           = virtualPath;

            // Build the data tree that needs to be compiled
            if (!BuildSourceDataTree())
            {
                return(null);
            }

            // Tell the root builder that the CodeCompileUnit is now fully complete
            if (Parser.RootBuilder != null)
            {
                Parser.RootBuilder.OnCodeGenerationComplete();
            }

            return(_codeCompileUnit);
        }
        public SRBControl()
        {
            Trace.WriteLine("Entering SRBControl()");

            InitializeComponent();

            this.progressBar1.Visibility = Visibility.Hidden;

            m_Dte2 = Microsoft.VisualStudio.Shell.Package.GetGlobalService(typeof(DTE)) as DTE2;

            m_StringResourceBuilder = new StringResourceBuilder(m_Dte2);

            m_StringResourceBuilder.InitProgress        = InitProgress;
            m_StringResourceBuilder.HideProgress        = HideProgress;
            m_StringResourceBuilder.SetProgress         = SetProgress;
            m_StringResourceBuilder.ClearGrid           = ClearGrid;
            m_StringResourceBuilder.SetGridItemsSource  = SetGridItemsSource;
            m_StringResourceBuilder.RefreshGrid         = RefreshGrid;
            m_StringResourceBuilder.SelectCell          = SelectCell;
            m_StringResourceBuilder.GetSelectedItem     = GetSelectedItem;
            m_StringResourceBuilder.GetSelectedColIndex = GetSelectedColIndex;
            m_StringResourceBuilder.GetSelectedRowIndex = GetSelectedRowIndex;
        }
    internal /*public*/ CodeCompileUnit GetCodeDomTree(CodeDomProvider codeDomProvider,
        StringResourceBuilder stringResourceBuilder, VirtualPath virtualPath) {

        Debug.Assert(_codeDomProvider == null && _stringResourceBuilder == null);

        _codeDomProvider = codeDomProvider;
        _stringResourceBuilder = stringResourceBuilder;
        _virtualPath = virtualPath;

        // Build the data tree that needs to be compiled
        if (!BuildSourceDataTree())
            return null;

        // Tell the root builder that the CodeCompileUnit is now fully complete
        if (Parser.RootBuilder != null) {
            Parser.RootBuilder.OnCodeGenerationComplete();
        }

        return _codeCompileUnit;
    }
예제 #7
0
        /*
         * Do one phase of sourcefiledata generation based on language requirements
         */

        internal void BuildCodeModel(ICodeGenerator generator, StringResourceBuilder stringResourceBuilder)
        {
            _compiler.GenerateCodeModelForBatch(generator, stringResourceBuilder);
        }