Пример #1
0
 public override void GenerateCode(AssemblyBuilder assemblyBuilder)
 {
     assemblyBuilder.AddAssemblyReference(typeof(SimpleWeb).Assembly);
     assemblyBuilder.AddAssemblyReference(typeof(SimpleTemplateBase).Assembly);
     assemblyBuilder.AddCodeCompileUnit(this, GeneratedCode);
     assemblyBuilder.GenerateTypeFactory(String.Format(CultureInfo.InvariantCulture, "{0}.{1}", Host.DefaultNamespace, "Foot"));
 }
Пример #2
0
        /// <summary>
        /// 添加依赖项
        /// </summary>
        /// <param name="assemblyBuilder"></param>
        protected virtual void AddReferences(AssemblyBuilder assemblyBuilder)
        {
            var buildTypeAssembly       = GetType().Assembly;
            var domProviderTypeAssembly = GetDomProviderType().Assembly;


            assemblyBuilder.AddAssemblyReference(buildTypeAssembly);
            if (buildTypeAssembly != domProviderTypeAssembly)
            {
                assemblyBuilder.AddAssemblyReference(domProviderTypeAssembly);
            }
        }
        public override void GenerateCode(AssemblyBuilder assemblyBuilder)
        {
            if (this._generatedCode == null)
            {
                this._generatedCode = GenerateCode();
            }

            assemblyBuilder.AddAssemblyReference(typeof(SimpleWeb).Assembly);
            assemblyBuilder.AddAssemblyReference(typeof(SimpleTemplateBase).Assembly);
            assemblyBuilder.AddCodeCompileUnit(this, this._generatedCode);
            assemblyBuilder.GenerateTypeFactory(this._typeName);
        }
Пример #4
0
        void GenerateCodeCore(AssemblyBuilder assemblyBuilder)
        {
            if (assemblyBuilder == null)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("assemblyBuilder");
            }

            CodeCompileUnit codeCompileUnit = parser.GetCodeModel();

            // Bail if we have nothing we need to compile
            //
            if (codeCompileUnit == null)
            {
                return;
            }

            // Add the code unit and then add all the assemblies
            //
            assemblyBuilder.AddCodeCompileUnit(this, codeCompileUnit);
            if (parser.AssemblyDependencies != null)
            {
                foreach (Assembly assembly in parser.AssemblyDependencies)
                {
                    assemblyBuilder.AddAssemblyReference(assembly);
                }
            }
        }
Пример #5
0
            /// <summary>
            /// Add the assembly references to the assembly builder depending on whether the databinding is enabled or not.
            /// </summary>
            /// <param name="assemblyBuilder">instance of assemblyBuilder where we need to add assembly references.</param>
            /// <param name="enableDataBinding">indicates whether databinding is enabled or not.</param>
            internal static void AddAssemblyReferences(AssemblyBuilder assemblyBuilder, bool useDataServiceCollection)
            {
                assemblyBuilder.AddAssemblyReference(typeof(System.Data.Services.Client.DataServiceContext).Assembly);

                if (useDataServiceCollection)
                {
                    // TODO: SQLBUDT 707098 - Use the helper method which returns the FrameworkName instance as defined in System.Runtime.Versioning namespace.
                    // When generating data binding code for .Net framework 3.5, we need to load the right version of windows base here.
                    // 3.5 Framework version: WindowsBase, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
                    // In 4.0, ObservableCollection<> class was moved into System.dll. Hence no need to do anything.
                    if (BuildManager.TargetFramework.Version.Major < 4)
                    {
                        assemblyBuilder.AddAssemblyReference(System.Reflection.Assembly.Load("WindowsBase, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"));
                    }
                }
            }
Пример #6
0
        public override void GenerateCode(AssemblyBuilder assemblyBuilder)
        {
            if (this.IgnoreFile)
            {
                return;
            }

            base.GenerateCode(assemblyBuilder);

            assemblyBuilder.AddAssemblyReference(typeof(Xcst.PackageModel.IXcstPackage).Assembly);

            if (!this.IsFileInCodeDir)
            {
                assemblyBuilder.AddAssemblyReference(this.PageType.Assembly);
                assemblyBuilder.GenerateTypeFactory(this.GeneratedTypeFullName);
            }
        }
Пример #7
0
        public override void GenerateCode(AssemblyBuilder assemblyBuilder)
        {
            try
            {
                this.EnsureDirective();

                if (String.IsNullOrEmpty(this.serviceTypeName))
                {
                    return;
                }

                Assembly tempAssembly = null;
                if (!String.IsNullOrEmpty(this.sourceText))
                {
                    // generate a code snippet for any inline source
                    CodeSnippetCompileUnit unit = new CodeSnippetCompileUnit(this.sourceText);
                    unit.LinePragma = new CodeLinePragma(base.VirtualPath, this.lineNumber);

                    // add known assembly references
                    foreach (Assembly assembly in this.ReferencedAssemblies)
                    {
                        assemblyBuilder.AddAssemblyReference(assembly);
                        if (!String.IsNullOrEmpty(assembly.Location) &&
                            !unit.ReferencedAssemblies.Contains(assembly.Location))
                        {
                            unit.ReferencedAssemblies.Add(assembly.Location);
                        }
                    }

                    // compile once so we can reflect and build proxy, etc.
                    assemblyBuilder.AddCodeCompileUnit(this, unit);
                    CompilerResults results = assemblyBuilder.CodeDomProvider.CompileAssemblyFromDom(new CompilerParameters(), unit);
                    if (results.Errors.HasErrors)
                    {
                        CompilerError error = results.Errors[0];
                        throw new HttpParseException(error.ErrorText, null, error.FileName, "", error.Line);
                    }
                    tempAssembly = results.CompiledAssembly;
                }

                Type serviceType = this.GetTypeToCache(this.serviceTypeName, tempAssembly);
                this.GenerateServiceProxyCode(assemblyBuilder, serviceType);
            }
            catch (HttpParseException ex)
            {
                Console.Error.WriteLine(ex);
                throw;
            }
            catch (Exception ex)
            {
                Console.Error.WriteLine(ex);
                throw new HttpParseException("GenerateCode: " + ex.Message, ex, base.VirtualPath, this.sourceText, this.lineNumber);
            }
        }
Пример #8
0
        private void GenerateCodeCore(AssemblyBuilder assemblyBuilder)
        {
            if (assemblyBuilder == null)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("assemblyBuilder");
            }
            CodeCompileUnit codeModel = this.parser.GetCodeModel();

            if (codeModel != null)
            {
                assemblyBuilder.AddCodeCompileUnit(this, codeModel);
                if (this.parser.AssemblyDependencies != null)
                {
                    foreach (Assembly assembly in this.parser.AssemblyDependencies)
                    {
                        assemblyBuilder.AddAssemblyReference(assembly);
                    }
                }
            }
        }
Пример #9
0
        Assembly GetAssemblyFromSource(string vpath)
        {
            vpath = UrlUtils.Combine(BaseVirtualDir, vpath);
            string realPath = MapPath(vpath, false);

            if (!File.Exists(realPath))
            {
                ThrowParseException("File " + vpath + " not found");
            }

            AddSourceDependency(vpath);

            CompilerResults    result;
            string             tmp;
            CompilerParameters parameters;
            CodeDomProvider    provider = BaseCompiler.CreateProvider(HttpContext.Current, language, out parameters, out tmp);

            if (provider == null)
            {
                throw new HttpException("Cannot find provider for language '" + language + "'.");
            }

            AssemblyBuilder abuilder = new AssemblyBuilder(provider);

            abuilder.CompilerOptions = parameters;
            abuilder.AddAssemblyReference(BuildManager.GetReferencedAssemblies() as List <Assembly>);
            abuilder.AddCodeFile(realPath);
            result = abuilder.BuildAssembly(new VirtualPath(vpath));

            if (result.NativeCompilerReturnValue != 0)
            {
                using (StreamReader reader = new StreamReader(realPath)) {
                    throw new CompilationException(realPath, result.Errors, reader.ReadToEnd());
                }
            }

            AddAssembly(result.CompiledAssembly, true);
            return(result.CompiledAssembly);
        }
Пример #10
0
 public void AddAssemblyReference(Assembly assembly)
 {
     _assemblyBuilder.AddAssemblyReference(assembly);
 }