private Tuple <List <AssemblyAssetProvider>, AssemblyAssetAggregator.ProviderCache> BuildGlobalProviders() { HashSet <string> hashSet1 = new HashSet <string>(); foreach (IAssembly assembly in (IEnumerable <IAssembly>) this.activeProject.AssemblyReferences) { if (assembly.IsLoaded && !assembly.IsResolvedImplicitAssembly) { hashSet1.Add(assembly.Name); } } AssemblyAssetAggregator.ProviderCache providerCache = (AssemblyAssetAggregator.ProviderCache) this.activeProject.Platform.Metadata.GetPlatformCache(DesignSurfacePlatformCaches.AssemblyAssetProviders); List <AssemblyAssetProvider> list = new List <AssemblyAssetProvider>(); if (providerCache != null) { foreach (AssemblyAssetProvider assemblyAssetProvider in (List <AssemblyAssetProvider>)providerCache) { if (!hashSet1.Contains(assemblyAssetProvider.AssemblyName)) { this.AddProvider((AssetProvider)assemblyAssetProvider); EnumerableExtensions.ForEach <TypeAsset>(Enumerable.OfType <TypeAsset>((IEnumerable)assemblyAssetProvider.Assets), (Action <TypeAsset>)(asset => asset.OnProjectChanged())); } } } else { providerCache = new AssemblyAssetAggregator.ProviderCache(); providerCache.Disposing += new EventHandler(this.ProviderCache_Disposing); foreach (string path in new HashSet <string>(BlendSdkHelper.GetExtensionDirectories(this.activeProject.TargetFramework))) { string[] files = Directory.GetFiles(path, "*.dll"); HashSet <string> hashSet2 = new HashSet <string>(); foreach (string filename in files) { foreach (string str in AssemblyAssetAggregator.GetDesignFileNames(filename, true)) { hashSet2.Add(str); } } foreach (string filename in files) { if (!hashSet2.Contains(filename.ToUpperInvariant())) { IAssemblyLoggingService assemblyLoggingService = (IAssemblyLoggingService)null; if (this.designerContext.Services != null) { assemblyLoggingService = this.designerContext.Services.GetService <IAssemblyLoggingService>(); } AssemblyAssetProvider assemblyAssetProvider = new AssemblyAssetProvider(this.activeProject, assemblyLoggingService, filename); providerCache.Add(assemblyAssetProvider); list.Add(assemblyAssetProvider); this.AddProvider((AssetProvider)assemblyAssetProvider); } } } if (!AssetLibrary.DisableAsyncUpdateCache) { this.activeProject.Platform.Metadata.SetPlatformCache(DesignSurfacePlatformCaches.AssemblyAssetProviders, (object)providerCache); } } return(new Tuple <List <AssemblyAssetProvider>, AssemblyAssetAggregator.ProviderCache>(list, providerCache)); }
public ProjectSystemOptionsPage(IProjectManager projectManager, IAssemblyLoggingService assemblyLoggingService) { this.projectManager = projectManager; this.assemblyLoggingService = assemblyLoggingService; }