예제 #1
0
        private static Assembly LoadImplementationAssembly(VsVersion version)
        {
            var format     = "Microsoft.VisualStudio.ExtensionManager.Implementation, Version={0}.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a";
            var strongName = string.Format(format, VsVersionUtil.GetVersionNumber(version));

            return(Assembly.Load(strongName));
        }
예제 #2
0
        private static Assembly LoadSettingsAssembly(VsVersion version)
        {
            var    format = "Microsoft.VisualStudio.Settings{0}, Version={1}.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a";
            string suffix = "";

            switch (version)
            {
            case VsVersion.Vs2010:
                suffix = "";
                break;

            case VsVersion.Vs2012:
                suffix = ".11.0";
                break;

            case VsVersion.Vs2013:
                suffix = ".12.0";
                break;

            case VsVersion.Vs2015:
                suffix = ".14.0";
                break;

            case VsVersion.Vs2017:
                suffix = ".15.0";
                break;

            default:
                throw new Exception("Bad Version");
            }

            var strongName = string.Format(format, suffix, VsVersionUtil.GetVersionNumber(version));

            return(Assembly.Load(strongName));
        }
예제 #3
0
 public static IEnumerable <InstalledVersion> GetLegacyInstalledVersions()
 {
     foreach (var vsVersion in LegacyVersions)
     {
         var majorVersion = VsVersionUtil.GetVersionNumber(vsVersion);
         var appPath      = GetApplicationPathFromRegistry(majorVersion);
         if (appPath != null && File.Exists(appPath))
         {
             yield return(new InstalledVersion(appPath, vsVersion));
         }
     }
 }
예제 #4
0
 public static IEnumerable <InstalledVersion> GetSetupInstanceInstalledVersions()
 {
     foreach (var setupInstance in GetSetupInstances())
     {
         var productPath         = setupInstance.GetProductPath();
         var appPath             = setupInstance.ResolvePath(productPath);
         var installationVersion = setupInstance.GetInstallationVersion();
         var version             = new Version(installationVersion);
         var vsVersion           = VsVersionUtil.GetVsVersion(version);
         var product             = setupInstance.GetProduct().GetId().Split('.').Last();
         yield return(new InstalledVersion(appPath, vsVersion, product));
     }
 }
예제 #5
0
        public static CommandLine ParseCommandLine(IConsoleContext consoleContext, params string[] args)
        {
            if (args.Length == 0)
            {
                return(CommandLine.Help);
            }

            var       toolAction    = ToolAction.Help;
            VsVersion?version       = null;
            string    product       = null;
            var       rootSuffix    = "";
            var       defaultDomain = false;
            var       arg           = "";

            int index = 0;

            while (index < args.Length)
            {
                switch (args[index].ToLower())
                {
                case "/i":
                case "/install":
                    if (index + 1 >= args.Length)
                    {
                        consoleContext.Write("/install requires an argument");
                        return(CommandLine.Help);
                    }

                    toolAction = ToolAction.Install;
                    arg        = args[index + 1];
                    index     += 2;
                    break;

                case "/u":
                case "/uninstall":
                    if (index + 1 >= args.Length)
                    {
                        consoleContext.Write("/uninstall requires an argument");
                        return(CommandLine.Help);
                    }

                    toolAction = ToolAction.Uninstall;
                    arg        = args[index + 1];
                    index     += 2;
                    break;

                case "/v":
                case "/version":
                    if (index + 1 >= args.Length)
                    {
                        consoleContext.Write("/version requires an argument");
                        return(CommandLine.Help);
                    }

                    version = VsVersionUtil.ToVsVersion(args[index + 1]);
                    index  += 2;
                    break;

                case "/p":
                case "/product":
                    if (index + 1 >= args.Length)
                    {
                        consoleContext.Write("/product requires an argument");
                        return(CommandLine.Help);
                    }

                    product = args[index + 1];
                    index  += 2;
                    break;

                case "/r":
                case "/rootsuffix":
                    if (index + 1 >= args.Length)
                    {
                        consoleContext.Write("/rootSuffix requires an argument");
                        return(CommandLine.Help);
                    }

                    rootSuffix = args[index + 1];
                    index     += 2;
                    break;

                case "/defaultdomain":
                    defaultDomain = true;
                    index++;
                    break;

                case "/l":
                case "/list":
                    toolAction = ToolAction.List;
                    if (index + 1 < args.Length)
                    {
                        arg = args[index + 1];
                    }

                    index = args.Length;
                    break;

                case "/help":
                    toolAction = ToolAction.Help;
                    index      = args.Length;
                    break;

                default:
                    arg = args[index];
                    if (!arg.StartsWith("/") && args.Length == 1)
                    {
                        // Default to Install if there's a single argument.
                        toolAction = ToolAction.Install;
                        index     += 1;
                        break;
                    }

                    consoleContext.WriteLine("{0} is not a valid argument", arg);
                    return(CommandLine.Help);
                }
            }

            return(new CommandLine(toolAction, version, product, rootSuffix, arg, defaultDomain: defaultDomain));
        }
예제 #6
0
 internal static string GetAssemblyVersionNumber(VsVersion version)
 {
     return(string.Format("{0}.0.0.0", VsVersionUtil.GetVersionNumber(version)));
 }