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")); }
/// <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); }
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); } } }
/// <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")); } } }
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); } }
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); } }
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); } } } }
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); }
public void AddAssemblyReference(Assembly assembly) { _assemblyBuilder.AddAssemblyReference(assembly); }