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>()));
 }
コード例 #2
0
 /// <summary>
 /// See <see cref="IReferenceResolver.GetReferences"/>
 /// </summary>
 /// <param name="context"></param>
 /// <param name="includeAssemblies"></param>
 /// <returns></returns>
 public IEnumerable <CompilerReference> GetReferences(TypeContext context = null, IEnumerable <CompilerReference> includeAssemblies = null)
 {
     return(CompilerServicesUtility
            .GetLoadedAssemblies()
            .Where(a => !a.IsDynamic && !a.FullName.Contains("Version=0.0.0.0") && File.Exists(a.Location) && !a.Location.Contains("CompiledRazorTemplates.Dynamic"))
            .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>()));
 }
コード例 #3
0
 /// <summary>
 /// See <see cref="IReferenceResolver.GetReferences"/>
 /// </summary>
 /// <param name="context"></param>
 /// <param name="includeAssemblies"></param>
 /// <returns></returns>
 public IEnumerable <CompilerReference> GetReferences(TypeContext context = null, IEnumerable <CompilerReference> includeAssemblies = null)
 {
     return(CompilerServicesUtility
            .GetLoadedAssemblies()
            .Where(IsValidAssembly)
            .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>()));
 }
コード例 #4
0
 public IEnumerable <string> GetReferences(TypeContext context = null, IEnumerable <string> includeAssemblies = null)
 {
     return(CompilerServicesUtility
            .GetLoadedAssemblies()
            .Where(a => !a.IsDynamic && File.Exists(a.Location))
            .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 => a.Location)
            .Concat(includeAssemblies ?? Enumerable.Empty <string>()));
 }
コード例 #5
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);
            }
        }
コード例 #6
0
 /// <summary>
 /// See <see cref="IReferenceResolver.GetReferences(TypeContext,IEnumerable{CompilerReference})" />
 /// </summary>
 /// <param name="context"></param>
 /// <param name="includeAssemblies"></param>
 /// <returns></returns>
 public IEnumerable <CompilerReference> GetReferences(
     TypeContext context = null,
     IEnumerable <CompilerReference> includeAssemblies = null)
 {
     return(CompilerServicesUtility.GetLoadedAssemblies()
            .Where(
                a =>
     {
         if (!a.IsDynamic && File.Exists(a.Location))
         {
             return !a.Location.Contains("CompiledRazorTemplates.Dynamic");
         }
         return false;
     })
            .GroupBy(a => a.GetName().Name)
            .Select(grp => grp.First(y => y.GetName().Version == grp.Max(x => x.GetName().Version)))
            .Select(CompilerReference.From)
            .Concat(includeAssemblies ?? Enumerable.Empty <CompilerReference>()));
 }
コード例 #7
0
        static void LoadMetadataReference()
        {
            Tools.MapPath("");
            Tools.GetId();
            string replstr    = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "file:///" : "file://";
            var    assemblies = CompilerServicesUtility
                                .GetLoadedAssemblies()
                                .Where(a => !a.IsDynamic && File.Exists(a.CodeBase.Replace(replstr, "")))
                                .Select(a => (a.CodeBase.Replace(replstr, "")));

            int c = assemblies.Count();

            Constant.BaseNamespaces = new MetadataReference[c];

            int i = 0;

            foreach (string item in assemblies)
            {
                Constant.BaseNamespaces[i] = (MetadataReference.CreateFromFile(item));
                i++;
            }
        }