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); }
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); }
static bool FilterVsVersion(InstalledVersion installedVersion, VsVersion?vsVersion) { return(vsVersion?.Equals(installedVersion.VsVersion) ?? true); }
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)); }