Beispiel #1
0
        public IEnumerable <CompilerReference> GetReferences(TypeContext context, IEnumerable <CompilerReference> includeAssemblies)
        {
            // TypeContext gives you some context for the compilation (which templates, which namespaces and types)

            // You must make sure to include all libraries that are required!
            // Mono compiler does add more standard references than csc!
            // If you want mono compatibility include ALL references here, including mscorlib!
            // If you include mscorlib here the compiler is called with /nostdlib.
            IEnumerable <string> loadedAssemblies = (new UseCurrentAssembliesReferenceResolver())
                                                    .GetReferences(context, includeAssemblies)
                                                    .Select(r => r.GetFile())
                                                    .ToArray();

            yield return(CompilerReference.From(FindLoaded(loadedAssemblies, "mscorlib.dll")));

            yield return(CompilerReference.From(FindLoaded(loadedAssemblies, "System.dll")));

            yield return(CompilerReference.From(FindLoaded(loadedAssemblies, "System.Core.dll")));

            //yield return CompilerReference.From(FindLoaded(loadedAssemblies, "Coralcode.Framework.dll")); ;
            yield return(CompilerReference.From(FindLoaded(loadedAssemblies, "RazorEngine.dll")));

            yield return(CompilerReference.From(typeof(MyIReferenceResolver).Assembly)); // Assembly

            // There are several ways to load an assembly:
            //yield return CompilerReference.From("Path-to-my-custom-assembly"); // file path (string)
            //byte[] assemblyInByteArray = --- Load your assembly ---;
            //yield return CompilerReference.From(assemblyInByteArray); // byte array (roslyn only)
            //string assemblyFile = --- Get the path to the assembly ---;
            //yield return CompilerReference.From(File.OpenRead(assemblyFile)); // stream (roslyn only)
        }
Beispiel #2
0
        /// <inheritdoc />
        public IEnumerable <CompilerReference> GetReferences(
            TypeContext context,
            IEnumerable <CompilerReference> includeAssemblies)
        {
            IEnumerable <string> loadedAssemblies =
                new UseCurrentAssembliesReferenceResolver()
                .GetReferences(context, includeAssemblies)
                .Select(r => r.GetFile())
                .ToArray();

            // All assemblies which can be used inside the templates need to be listed here.
            yield return(CompilerReference.From(this.FindLoaded(loadedAssemblies, "System.dll")));

            yield return(CompilerReference.From(this.FindLoaded(loadedAssemblies, "System.Core.dll")));

            yield return(CompilerReference.From(this.FindLoaded(loadedAssemblies, "netstandard.dll")));

            yield return(CompilerReference.From(this.FindLoaded(loadedAssemblies, "Microsoft.CSharp.dll")));

            yield return(CompilerReference.From(this.FindLoaded(loadedAssemblies, "Newtonsoft.Json.dll")));

            yield return(CompilerReference.From(this.FindLoaded(loadedAssemblies, "Cake.Core.dll")));

            yield return(CompilerReference.From(this.FindLoaded(loadedAssemblies, "Cake.Issues.dll")));

            yield return(CompilerReference.From(this.FindLoaded(loadedAssemblies, "Cake.Issues.Reporting.Generic.dll")));

            yield return(CompilerReference.From(typeof(RazorEngine.Engine).Assembly));
        }
Beispiel #3
0
 /// <summary>
 /// Returns a set of assemblies that must be referenced by the compiled template.
 /// </summary>
 /// <returns>The set of assemblies.</returns>
 public override IEnumerable <CompilerReference> IncludeReferences()
 {
     return(new[]
     {
         CompilerReference.From(typeof(Binder).Assembly)
     });
 }
        public IEnumerable <CompilerReference> GetReferences(TypeContext context, IEnumerable <CompilerReference> includeAssemblies)
        {
            IEnumerable <string> loadedAssemblies = (new UseCurrentAssembliesReferenceResolver())
                                                    .GetReferences(context, includeAssemblies)
                                                    .Select(r => r.GetFile())
                                                    .ToArray();

            // If more assembly references are required for RazorEngine then add references here also
            // so RazorEngine will load the assemblies for its compiler
            yield return(CompilerReference.From(FindLoaded(loadedAssemblies, "mscorlib.dll")));

            yield return(CompilerReference.From(FindLoaded(loadedAssemblies, "System.dll")));

            yield return(CompilerReference.From(FindLoaded(loadedAssemblies, "System.Core.dll")));

            yield return(CompilerReference.From(FindLoaded(loadedAssemblies, "System.Web.dll")));

            yield return(CompilerReference.From(FindLoaded(loadedAssemblies, "System.Web.Mvc.dll")));

            yield return(CompilerReference.From(FindLoaded(loadedAssemblies, "System.Web.Razor.dll")));

            yield return(CompilerReference.From(FindLoaded(loadedAssemblies, "RazorEngine.dll")));

            yield return(CompilerReference.From(FindLoaded(loadedAssemblies, "CSJSHandler.dll")));
        }
 public IEnumerable <CompilerReference> GetReferences(TypeContext context = null, IEnumerable <CompilerReference> includeAssemblies = null)
 {
     return((from a in CompilerServicesUtility.GetLoadedAssemblies().Where(delegate(Assembly a)
     {
         if (!a.IsDynamic)
         {
             try
             {
                 // Call to .Location property throws an exception on some assemblies, something weird with file://?/C:/...
                 if (File.Exists(a.Location))
                 {
                     return !a.Location.Contains("CompiledRazorTemplates.Dynamic");
                 }
             }
             catch
             {
                 return false;
             }
         }
         return false;
     })
             group a by a.GetName().Name into grp
             select grp.First((Assembly y) => y.GetName().Version == grp.Max((Assembly x) => x.GetName().Version)) into a
             select CompilerReference.From(a)).Concat(includeAssemblies ?? Enumerable.Empty <CompilerReference>()));
 }
Beispiel #6
0
            public IEnumerable <CompilerReference> GetReferences(TypeContext context, IEnumerable <CompilerReference> includeAssemblies = null)
            {
                var newReference = new[] { CompilerReference.From(SystemRuntime), };

                var assemblies = includeAssemblies?.Concat(newReference) ?? newReference;

                return(Resolver.GetReferences(context, assemblies));
            }
Beispiel #7
0
            public IEnumerable <CompilerReference> GetReferences(TypeContext context, IEnumerable <CompilerReference> includeAssemblies = null)
            {
                // We need to return this standard set or even simple views blow up on
                // a missing reference to System.Linq.
                var loadedAssemblies = (new UseCurrentAssembliesReferenceResolver()).GetReferences(null);

                foreach (var reference in loadedAssemblies)
                {
                    yield return(reference);
                }
                yield return(CompilerReference.From("test/TestHelper.dll"));
            }
Beispiel #8
0
        static HuberReferenceResolver()
        {
            //加载本地所有类库,@using 使用
            compilerReference = new List <CompilerReference>();
            IEnumerable <string> loadedAssemblies = (new UseCurrentAssembliesReferenceResolver())
                                                    .GetReferences(null, null)
                                                    .Select(r => r.GetFile())
                                                    .ToArray();

            foreach (var l in loadedAssemblies)
            {
                compilerReference.Add(CompilerReference.From(l));
            }
        }
Beispiel #9
0
 public IEnumerable <CompilerReference> GetReferences(TypeContext context,
                                                      IEnumerable <CompilerReference> includeAssemblies)
 {
     // TypeContext gives you some context for the compilation (which templates, which namespaces and types)
     // My templates need some special reference to compile.
     return(new[]
     {
         //CompilerReference.From("Path-to-my-custom-assembly"), // file path (string)
         CompilerReference.From(typeof(SystemConfig).Assembly),
         CompilerReference.From(typeof(Config).Assembly),
         CompilerReference.From(typeof(MongoConnectionConfig).Assembly)  // Assembly
         //CompilerReference.From(assemblyInByteArray), // byte array (roslyn only)
         //CompilerReference.From(File.OpenRead(assembly)), // stream (roslyn only)
     });
 }
Beispiel #10
0
    public IEnumerable <CompilerReference> GetReferences(
        TypeContext context,
        IEnumerable <CompilerReference> includeAssemblies = null)
    {
        yield return(CompilerReference.From(this.GetType().Assembly));

        var refs = new UseCurrentAssembliesReferenceResolver()
                   .GetReferences(context, includeAssemblies)
                   .Where(f => !f.GetFile().EndsWith(".winmd"));

        foreach (var r in refs)
        {
            yield return(r);
        }
    }
        public IEnumerable <CompilerReference> GetReferences(TypeContext context, IEnumerable <CompilerReference> includeAssemblies = null)
        {
            var results = new UseCurrentAssembliesReferenceResolver()
                          .GetReferences(context, includeAssemblies)
                          .ToList();

            //添加DataTable的引用
            results.Add(CompilerReference.From(typeof(DataTable).Assembly));
            if (_assembliesToLoad != null)
            {
                foreach (var item in _assembliesToLoad)
                {
                    results.Add(CompilerReference.From(item));
                }
            }
            return(results);
        }
        public IEnumerable <CompilerReference> GetReferences(TypeContext context, IEnumerable <CompilerReference> includeAssemblies = null)
        {
            // If you include mscorlib here the compiler is called with /nostdlib.
            IEnumerable <string> loadedAssemblies = new UseCurrentAssembliesReferenceResolver()
                                                    .GetReferences(context, includeAssemblies)
                                                    .Select(r => r.GetFile())
                                                    .ToArray();

            foreach (var assm in loadedAssemblies)
            {
                yield return(CompilerReference.From(assm));
            }

            // Pre-load template models
            Assembly.Load(typeof(ATS.eFP.Entities.Workorder.Workorder).Assembly.GetName());
            Assembly.Load(typeof(ATS.eFP.Entities.Product.Product).Assembly.GetName());
            Assembly.Load(typeof(ATS.eFP.WebJob.Email.Application.Models.WorkorderNotificationWrapper).Assembly.GetName());
        }
Beispiel #13
0
        public IEnumerable <CompilerReference> GetReferences(TypeContext context, IEnumerable <CompilerReference> includeAssemblies = null)
        {
            var allAssembly = CompilerServicesUtility
                              .GetLoadedAssemblies();

            var AssemblyToReference = allAssembly
                                      .Where(a => !a.IsDynamic && File.Exists(a.Location) && !a.Location.Contains("CompiledRazorTemplates.Dynamic") && a.FullName.IndexOf("System.Web.Helpers") < 0) //(CompilerServiceBase.DynamicTemplateNamespace))
                                      .GroupBy(a => a.GetName().Name).Select(grp => grp.First(y => y.GetName().Version == grp.Max(x => x.GetName().Version)))                                        // only select distinct assemblies based on FullName to avoid loading duplicate assemblies
                                      .Select(a => CompilerReference.From(a))
                                      .Concat(includeAssemblies ?? Enumerable.Empty <CompilerReference>());

            yield return(CompilerReference.From(HostingEnvironment.ApplicationPhysicalPath + @"Modules\Laser.Orchard.StartupConfig\bin\System.Web.Helpers.dll"));

            foreach (var assembly in AssemblyToReference)
            {
                yield return(assembly);
            }
        }
Beispiel #14
0
            public IEnumerable <CompilerReference> GetReferences(TypeContext context, IEnumerable <CompilerReference> includeAssemblies = null)
            {
                // We need to return this standard set or even simple views blow up on
                // a missing reference to System.Linq.
                var loadedAssemblies = (new UseCurrentAssembliesReferenceResolver()).GetReferences(null);

                foreach (var reference in loadedAssemblies)
                {
                    yield return(reference);
                }

                var testHelper = Path.Combine(
                    Path.GetDirectoryName(typeof(ReferenceResolverConfigCreator).Assembly.Location),
                    "test",
                    "TestHelper.dll");

                yield return(CompilerReference.From(testHelper));
            }
 public override IEnumerable <CompilerReference> IncludeReferences()
 {
     // Ensure the Microsoft.CSharp assembly is referenced to support dynamic typing.
     return(new[] { CompilerReference.From(typeof(Microsoft.CSharp.RuntimeBinder.Binder).Assembly) });
 }