Exemple #1
0
        static bool FilterProduct(InstalledVersion installedVersion, string product)
        {
            if (product == null)
            {
                return(true);
            }

            var installedProduct = installedVersion.Product;

            if (installedProduct != null)
            {
                if (installedProduct.StartsWith(product, StringComparison.OrdinalIgnoreCase))
                {
                    return(true);
                }
            }

            var installedApplicationPath = installedVersion.ApplicationPath;

            if (installedApplicationPath != null)
            {
                if (installedApplicationPath.IndexOf(product, StringComparison.OrdinalIgnoreCase) != -1)
                {
                    return(true);
                }
            }

            return(false);
        }
Exemple #2
0
        public static IVsExtensionManager CreateExtensionManager(InstalledVersion installedVersion, string rootSuffix)
        {
            var settingsAssembly = LoadSettingsAssembly(installedVersion.VsVersion);

            var externalSettingsManagerType = settingsAssembly.GetType("Microsoft.VisualStudio.Settings.ExternalSettingsManager");
            var settingsManager             = externalSettingsManagerType
                                              .GetMethods()
                                              .Where(x => x.Name == "CreateForApplication")
                                              .Where(x =>
            {
                var parameters = x.GetParameters();
                return
                (parameters.Length == 2 &&
                 parameters[0].ParameterType == typeof(string) &&
                 parameters[1].ParameterType == typeof(string));
            })
                                              .FirstOrDefault()
                                              .Invoke(null, new[] { installedVersion.ApplicationPath, rootSuffix });

            var extensionManagerServiceType = GetExtensionManagerServiceType(installedVersion.VsVersion);
            var extensionManager            = (IVsExtensionManager)extensionManagerServiceType
                                              .GetConstructors()
                                              .Where(x => x.GetParameters().Length == 1 && x.GetParameters()[0].ParameterType.IsAssignableFrom(settingsManager.GetType()))
                                              .FirstOrDefault()
                                              .Invoke(new[] { settingsManager });

            return(extensionManager);
        }
 internal CommandRunner(IConsoleContext consoleContext, IVsExtensionManager extensionManager,
                        InstalledVersion installedVersion, string rootSuffix)
 {
     Console           = consoleContext;
     _extensionManager = extensionManager;
     _installedVersion = installedVersion;
     _rootSuffix       = rootSuffix;
 }
        public ApplicationContext(InstalledVersion installedVersion, bool createDomain)
        {
            this.createDomain = createDomain;

            if (createDomain)
            {
                var appDomainSetup = new AppDomainSetup();
                if (installedVersion.VsVersion != VsVersion.Vs2010)
                {
                    var configFile = Path.GetTempFileName();
                    File.WriteAllText(configFile, GenerateConfigFileContents(installedVersion.VsVersion));
                    appDomainSetup.ConfigurationFile = configFile;
                }

                appDomainSetup.ApplicationBase = Path.GetDirectoryName(GetType().Assembly.Location);
                appDomain = AppDomain.CreateDomain(installedVersion.ToString(), securityInfo: null, info: appDomainSetup);
            }
            else
            {
                appDomain = AppDomain.CurrentDomain;
            }

            InitProbingPathResolver(appDomain, installedVersion.ApplicationPath);
        }
Exemple #5
0
 static bool FilterVsVersion(InstalledVersion installedVersion, VsVersion?vsVersion)
 {
     return(vsVersion?.Equals(installedVersion.VsVersion) ?? true);
 }
Exemple #6
0
 public static bool Filter(InstalledVersion installedVersion, CommandLine commandLine)
 {
     return(FilterVsVersion(installedVersion, commandLine.VsVersion) && FilterProduct(installedVersion, commandLine.Product));
 }
        public CommandRunner Create(IConsoleContext consoleContext, InstalledVersion installedVersion, string rootSuffix)
        {
            var extensionManager = ExtensionManagerFactory.CreateExtensionManager(installedVersion, rootSuffix);

            return(new CommandRunner(consoleContext, extensionManager, installedVersion, rootSuffix));
        }