// <summary> // This method returns a list of assemblies whose contents depend on whether we // are running in an ASP.NET environment. If we are indeed in a Web/ASP.NET // scenario, we pick up the assemblies that all page compilations need to // reference. If not, then we simply get the list of assemblies referenced by // the entry assembly. // </summary> // <returns> A list of assemblies </returns> private static IEnumerable <Assembly> GetAllDiscoverableAssemblies() { var assembly = Assembly.GetEntryAssembly(); var assemblyList = new HashSet <Assembly>( AssemblyComparer.Instance); foreach (var loadedAssembly in GetAlreadyLoadedNonSystemAssemblies()) { assemblyList.Add(loadedAssembly); } var aspProxy = new AspProxy(); if (!aspProxy.IsAspNetEnvironment()) { if (assembly == null) { return(assemblyList); } assemblyList.Add(assembly); foreach (var referenceAssembly in MetadataAssemblyHelper.GetNonSystemReferencedAssemblies(assembly)) { assemblyList.Add(referenceAssembly); } return(assemblyList); } if (aspProxy.HasBuildManagerType()) { var referencedAssemblies = aspProxy.GetBuildManagerReferencedAssemblies(); // filter out system assemblies if (referencedAssemblies != null) { foreach (var referencedAssembly in referencedAssemblies) { if (MetadataAssemblyHelper.ShouldFilterAssembly(referencedAssembly)) { continue; } assemblyList.Add(referencedAssembly); } } } return(assemblyList.Where(a => a != null)); }
private static IEnumerable <Assembly> GetAllDiscoverableAssemblies() { Assembly entryAssembly = Assembly.GetEntryAssembly(); HashSet <Assembly> source = new HashSet <Assembly>((IEqualityComparer <Assembly>)DefaultAssemblyResolver.AssemblyComparer.Instance); foreach (Assembly nonSystemAssembly in DefaultAssemblyResolver.GetAlreadyLoadedNonSystemAssemblies()) { source.Add(nonSystemAssembly); } AspProxy aspProxy = new AspProxy(); if (!aspProxy.IsAspNetEnvironment()) { if (entryAssembly == (Assembly)null) { return((IEnumerable <Assembly>)source); } source.Add(entryAssembly); foreach (Assembly referencedAssembly in MetadataAssemblyHelper.GetNonSystemReferencedAssemblies(entryAssembly)) { source.Add(referencedAssembly); } return((IEnumerable <Assembly>)source); } if (aspProxy.HasBuildManagerType()) { IEnumerable <Assembly> referencedAssemblies = aspProxy.GetBuildManagerReferencedAssemblies(); if (referencedAssemblies != null) { foreach (Assembly assembly in referencedAssemblies) { if (!MetadataAssemblyHelper.ShouldFilterAssembly(assembly)) { source.Add(assembly); } } } } return(source.Where <Assembly>((Func <Assembly, bool>)(a => a != (Assembly)null))); }