示例#1
0
 public PackageService(IEnumerable <PackageStartupInfo> packages, IPackageStorage storage)
 {
     _storage          = storage;
     InstalledPackages = packages.Select(p => new Package
     {
         Id            = p.Id,
         Version       = p.Version,
         IsMetaPackage = p.Module == null,
         IsLoaded      = true,
         IsEnabled     = true,
         Dependencies  = p.Dependencies,
     }).ToArray();
 }
示例#2
0
        public virtual void Build(IPackageStorage storage)
        {
            System.IO.Directory.CreateDirectory(GetDataFolder());
            System.IO.Directory.Delete(GetDataFolder(), true);
            System.IO.Directory.CreateDirectory(GetDataFolder());
            System.Threading.Thread.Sleep(500); //The files don't disappear right away it seems
            storage.SavePackage(this);          //, System.IO.Path.Combine(GetDataFolder(), Name + ".ecp"));
            foreach (var s in Solutions)
            {
                s.Package = this;
                s.PrepareSolution(this);
            }
            string zipFileName = GetDataFolder() + ".zip";

            if (System.IO.File.Exists(zipFileName))
            {
                System.IO.File.Delete(zipFileName);
            }
            ZipFile.CreateFromDirectory(GetDataFolder(), zipFileName);
            System.IO.Directory.Delete(GetDataFolder(), true);
        }
示例#3
0
        public static void Initialize(string[] commandLine, IEnumerable <PackageStartupInfo> packages, IPackageStorage storage)
        {
            if (IsInitialized)
            {
                throw new InvalidOperationException("Bootstrapper can only be initialized once.");
            }
            IsInitialized = true;

            _packages = packages;
            _storage  = storage;

            var currentAssembly  = typeof(Bootstraper).Assembly;
            var versionAttribute = currentAssembly.GetCustomAttribute <AssemblyInformationalVersionAttribute>();

            Console.WriteLine(@"
       || ||
     __||_||__    ( I'm running! )
    ||.\_|_/.||  O
    =|@ ___ @|= o
    ||_/|||\_||
      |-----|/
     /|     | ");

            Console.WriteLine();
            Console.Write("Bootstrap version: ");
            var foregroundColor = Console.ForegroundColor;

            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine(versionAttribute.InformationalVersion);
            Console.ForegroundColor = foregroundColor;
            Console.WriteLine();

            ImportModuleTypes();
            ComposeModules();
            InitializeModules();
        }
示例#4
0
 public FallbackConfigStrategy(IEnumerable <SqlMapConfig> mapConfigs, IPackageStorage storage)
 {
     _storage = storage;
 }
示例#5
0
 public MultipleConfigsStorageStrategy(IEnumerable <SqlMapConfig> mapConfigs, IPackageStorage storage)
 {
     _mapConfigs = mapConfigs;
     _storage    = storage;
 }
 static public IPackageStorage CreateStorage(IPackageStorage storageDescription)
 {
     return(storageDescription);
 }
示例#7
0
        public static void Initialize(string[] commandLine, IEnumerable <PackageStartupInfo> packages, IPackageStorage storage)
        {
            if (IsInitialized)
            {
                throw new InvalidOperationException("Bootstrapper can only be initialized once.");
            }
            IsInitialized = true;

            var currentAssembly  = typeof(Bootstraper).Assembly;
            var versionAttribute = currentAssembly.GetCustomAttribute <AssemblyInformationalVersionAttribute>();

            Console.WriteLine(@"
       || ||
     __||_||__    ( I'm running! )
    ||.\_|_/.||  O
    =|@ ___ @|= o
    ||_/|||\_||
      |-----|/
     /|     | ");

            Console.WriteLine();
            Console.Write("Bootstrap version: ");
            var foregroundColor = Console.ForegroundColor;

            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine(versionAttribute.InformationalVersion);
            Console.ForegroundColor = foregroundColor;
            Console.WriteLine();

            var moduleInfos = packages.ToDictionary(p => p.Id, p => new ModuleInfo(p.Id, p.Version, p.Dependencies.Keys), StringComparer.OrdinalIgnoreCase);
            var assemblies  = packages.Select(p => p.Module.Value).ToArray();
            var compositor  = new Compositor(assemblies
                                             .SelectMany(a => a.DefinedTypes
                                                         .SelectMany(t => t.GetCustomAttributes <ExportAttribute>()
                                                                     .Select(attr => new Export
            {
                Implementation = t,
                Contract       = attr.ContractType,
                SingleInstance = attr.SingleInstance,
                LazyCreate     = attr.LazyCreate
            }))));

            compositor.AttachInstance <IModuleList>(new ModuleList(moduleInfos));
            compositor.AttachInstance <IPackageService>(new PackageService(packages, storage));
            Compositor.SetDefault(compositor);
        }
示例#8
0
文件: Bootstraper.cs 项目: Elenw/ing
        public static void Initialize(Type visualElementType, string[] commandLine, IEnumerable <PackageStartupInfo> packages, IPackageStorage storage)
        {
            if (IsInitialized)
            {
                throw new InvalidOperationException("Bootstrapper can only be initialized once.");
            }
            IsInitialized = true;

            var currentAssembly  = typeof(Bootstraper).Assembly;
            var versionAttribute = currentAssembly.GetCustomAttribute <AssemblyInformationalVersionAttribute>();

            Console.WriteLine(@"
       || ||
     __||_||__    ( I'm running! )
    ||.\_|_/.||  O
    =|@ ___ @|= o
    ||_/|||\_||
      |-----|/
     /|     | ");

            Console.WriteLine();
            Console.Write("Bootstrap version: ");
            var foregroundColor = Console.ForegroundColor;

            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine(versionAttribute.InformationalVersion);
            Console.ForegroundColor = foregroundColor;
            Console.WriteLine();

            var moduleInfos = packages.ToDictionary(p => p.Id, p => new ModuleInfo(p.Id, p.Version, p.Dependencies.Keys), StringComparer.OrdinalIgnoreCase);
            var assemblies  = packages.Select(p => p.Module.Value).ToArray();

            var builder = new ContainerBuilder();
            var eager   = new HashSet <Type>();

            foreach (var a in assemblies)
            {
                foreach (var t in a.DefinedTypes)
                {
                    foreach (var attr in t.GetCustomAttributes())
                    {
                        switch (attr)
                        {
                        case ExportAttribute export:
                            var b = builder.RegisterType(t).As(export.ContractType);
                            if (export.SingleInstance)
                            {
                                b.SingleInstance();
                            }
                            else
                            {
                                b.InstancePerDependency();
                            }
                            if (!export.LazyCreate)
                            {
                                eager.Add(export.ContractType);
                            }
                            break;

                        case ExportViewAttribute view:
                            builder.RegisterType(t).Named(view.ViewId, visualElementType).InstancePerDependency();
                            break;

                        case ExportSettingViewAttribute setting:
                            builder.RegisterType(t).WithMetadata(FlexibleShell <object> .SettingCategoryName, setting.Category).As(visualElementType);
                            break;
                        }
                    }
                }
            }

            builder.RegisterInstance(new ModuleList(moduleInfos)).As <IModuleList>();
            builder.RegisterInstance(new PackageService(packages, storage)).As <IPackageService>();
            var c          = builder.Build();
            var compositor = new AutoFacCompositor(c);

            foreach (var t in eager)
            {
                compositor.Resolve(t.MakeArrayType());
            }
        }
示例#9
0
        public static void Initialize(string[] commandLine, IEnumerable <PackageStartupInfo> packages, IPackageStorage storage)
        {
            AppDomain.CurrentDomain.UnhandledException += (s, e) =>
            {
                System.IO.Directory.CreateDirectory(@"log\exceptions");
                System.IO.File.WriteAllText($@"log\exceptions\{DateTime.Now.ToString("yyyyMMddHHmmss")}.txt", e.ExceptionObject.ToString());
            };

            if (IsInitialized)
            {
                throw new InvalidOperationException("Bootstrapper can only be initialized once.");
            }
            IsInitialized = true;

            var currentAssembly  = typeof(Bootstraper).Assembly;
            var versionAttribute = currentAssembly.GetCustomAttribute <AssemblyInformationalVersionAttribute>();

            Console.WriteLine(@"
       || ||
     __||_||__    ( I'm running! )
    ||.\_|_/.||  O
    =|@ ___ @|= o
    ||_/|||\_||
      |-----|/
     /|     | ");

            Console.WriteLine();
            Console.Write("Bootstrap version: ");
            var foregroundColor = Console.ForegroundColor;

            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine(versionAttribute.InformationalVersion);
            Console.ForegroundColor = foregroundColor;
            Console.WriteLine();

            var moduleInfos = packages.ToDictionary(p => p.Id, p => new ModuleInfo(p.Id, p.Version, p.Dependencies.Keys), StringComparer.OrdinalIgnoreCase);
            var assemblies  = packages.Select(p => p.Module.Value).ToArray();

            var builder      = new ContainerBuilder();
            var eager        = new HashSet <Type>();
            var views        = new Dictionary <string, Type>();
            var settingViews = new List <KeyValuePair <Type, SettingCategory> >();

            foreach (var a in assemblies)
            {
                foreach (var t in a.DefinedTypes)
                {
                    IRegistrationBuilder <object, ConcreteReflectionActivatorData, SingleRegistrationStyle> b = null;
                    foreach (var attr in t.GetCustomAttributes())
                    {
                        switch (attr)
                        {
                        case ExportAttribute export:
                            if (b == null)
                            {
                                b = builder.RegisterType(t);
                            }
                            b.As(export.ContractType);
                            if (export.SingleInstance)
                            {
                                b.SingleInstance();
                            }
                            else
                            {
                                b.InstancePerDependency();
                            }
                            if (!export.LazyCreate)
                            {
                                eager.Add(export.ContractType);
                            }
                            break;

                        case ExportViewAttribute view:
                            builder.RegisterType(t).As(t).InstancePerDependency();
                            views[view.ViewId] = t;
                            break;

                        case ExportSettingViewAttribute setting:
                            builder.RegisterType(t).As(t).InstancePerDependency();
                            settingViews.Add(new KeyValuePair <Type, SettingCategory>(t, setting.Category));
                            break;
                        }
                    }
                }
            }

            builder.RegisterInstance(new ModuleList(moduleInfos)).As <IModuleList>();
            builder.RegisterInstance(new PackageService(packages, storage)).As <IPackageService>();
            var c          = builder.Build();
            var compositor = new AutoFacCompositor(c, views, settingViews);

            foreach (var t in eager)
            {
                compositor.Resolve(t.MakeArrayType());
            }
        }
        protected override async System.Threading.Tasks.Task InitializeAsync(CancellationToken cancellationToken, IProgress <ServiceProgressData> progress)
        {
            NLogConfigurationService.ConfigureNLog();
            NLogConfigurationService.ConfigureMiniProfilerWithDefaultLogger();

            Logger logger = LogManager.GetLogger("error");

            logger.Info("Extension initalizing");

            EnvDTE = await GetServiceAsync(typeof(DTE)) as DTE2;

            Assumes.Present(EnvDTE);

            DteSemaphore.Release();

            Storage = new PackageStorage();

            var componentModel = await GetServiceAsync(typeof(SComponentModel)) as IComponentModel;

            Assumes.Present(componentModel);

            //Initialize public components, initialize instances that are dependent on any component
            TextManager = await GetServiceAsync(typeof(SVsTextManager)) as IVsTextManager;

            EditorAdaptersFactory = componentModel.GetService <IVsEditorAdaptersFactoryService>();

            DocumentNavigationInstance.InjectDTE(EnvDTE);
            //Prepare package events
            var indexingQueue   = new ProjectIndexingQueue();
            var workspaceEvents = new WorkspaceEvents(indexingQueue);

            Workspace = componentModel.GetService <VisualStudioWorkspace>();
            Workspace.WorkspaceChanged += (s, e) => ThreadHelper.JoinableTaskFactory.RunAsync(async() => await workspaceEvents.WorkspaceChangedAsync(s, e));

            var indexingWorkflow = new IndexingWorkflow(Storage.IndexingWorkflowOptions, new ProjectItemRetreiver(EnvDTE), Storage);

            _envDteEvents = EnvDTE.Events as Events2;
            if (_envDteEvents != null)
            {
                ProjectItemEventsActions projectItemEvents = new ProjectItemEventsActions();
                _envDteProjectItemsEvents              = _envDteEvents.ProjectItemsEvents;
                _envDteProjectItemsEvents.ItemAdded   += projectItemEvents.ItemAdded;
                _envDteProjectItemsEvents.ItemRemoved += projectItemEvents.ItemRemoved;
                _envDteProjectItemsEvents.ItemRenamed += projectItemEvents.ItemRenamed;

                EventHandlers.BuildEventsActions buildEvents = new EventHandlers.BuildEventsActions();
                _buildEvents = _envDteEvents.BuildEvents;
                _buildEvents.OnBuildBegin += buildEvents.OnBuildBegin;
            }

            var solutionEventsActions = new VSSolutionEventsActions(indexingWorkflow);

            await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

            await ResultWindowCommand.InitializeAsync(this);

            OutputWindowLogger.Init(await GetServiceAsync(typeof(SVsOutputWindow)) as SVsOutputWindow);
            IStatusBar = await GetServiceAsync(typeof(SVsStatusbar)) as IVsStatusbar;

            var svsSolution = await GetServiceAsync(typeof(SVsSolution));

            Solution = svsSolution as IVsSolution;
            Assumes.Present(Solution);

            await HandleSolutionAsync(svsSolution, solutionEventsActions, indexingQueue);


            _solutionEventsHandler = new SolutionEventsHandler(solutionEventsActions);
            Solution.AdviseSolutionEvents(_solutionEventsHandler, out _solutionEventsCookie);

            await Goto.InitializeAsync(this);

            await RenameModalWindowCommand.InitializeAsync(this);

            await RenameCommand.InitializeAsync(this);

            await PrettyPrintCommand.InitializeAsync(this);
        }
示例#11
0
 public ConfigStorageStrategyFactory(IPackageStorage storage)
 {
     _storage = storage;
 }
示例#12
0
 public IndexingWorkflow(IndexingWorkflowOptions options, IProjectItemRetreiver projectItemRetreiver, IPackageStorage storage)
 {
     _options = options;
     _projectItemRetreiver = projectItemRetreiver;
     _configStrategy       = new DefaultConfigStrategy(new ConfigStorageStrategyFactory(storage));
 }