Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
 public ProjectSystemOptionsPage(IProjectManager projectManager, IAssemblyLoggingService assemblyLoggingService)
 {
     this.projectManager         = projectManager;
     this.assemblyLoggingService = assemblyLoggingService;
 }