/// <summary>
 /// 转换为短格式的版本字符描述,会去掉后面的0;
 /// </summary>
 public static string ToShortString(this Version value)
 {
     if (!value.IsValid())
     {
         return(string.Empty);
     }
     if (value.Minor <= 0 && value.Build <= 0 && value.Revision <= 0)
     {
         return(string.Format("{0}", value.Major));
     }
     if (value.Build <= 0 && value.Revision <= 0)
     {
         return(string.Format("{0}.{1}", value.Major, value.Minor));
     }
     if (value.Revision <= 0)
     {
         return(string.Format("{0}.{1}.{2}", value.Major, value.Minor, value.Build));
     }
     return(string.Format("{0}.{1}.{2}.{3}", value.Major, value.Minor, value.Build, value.Revision));
 }
        /// <summary>
        /// Esegue il controllo sulle versioni e lancia il programma di aggiornamento.
        /// </summary>
        private void CheckForUpdates()
        {
            string theVersion = null;
            if (this.myVersion == null)
            {
                var myDir = System.Reflection.Assembly.GetExecutingAssembly().Location;
                myDir = System.IO.Path.GetDirectoryName(myDir);
                var myFiles = System.IO.Directory.GetFiles(myDir);
                string myManifest = null;
                foreach (var f in myFiles)
                {
                    if (f.ToLower().EndsWith(".vsixmanifest"))
                    {
                        myManifest = f;
                        break;
                    }
                }

                if (myManifest == null)
                {
                    return;
                }

                using (var theFile = System.IO.File.OpenRead(myManifest))
                {
                    var xml = System.Xml.XmlReader.Create(theFile);
                    xml.ReadToFollowing("Version");
                    theVersion = xml.ReadString();
                    xml.Close();
                }

                if (theVersion == null)
                {
                    return;
                }

                this.myVersion = new Version(theVersion);
                if (!this.myVersion.IsValid())
                {
                    this.myVersion = null;
                    return;
                }
            }

            if (System.IO.Directory.Exists(@"S:\AlmaStyleFix\Updates"))
            {
                var files = new System.Collections.Generic.List<string>();
                files.AddRange(System.IO.Directory.GetFiles(@"S:\AlmaStyleFix\Updates"));
                for (int i = 0; i < files.Count; i++)
                {
                    if (!files[i].EndsWith(".vsix"))
                    {
                        files.RemoveAt(i--);
                    }
                }

                if (files.Count > 0)
                {
                    string fileToUpdate = null;
                    foreach (var f in files)
                    {
                        var theFileVersion = new Version(f);
                        if (!theFileVersion.IsValid())
                        {
                            continue;
                        }

                        if (theFileVersion > this.myVersion)
                        {
                            fileToUpdate = f;
                            break;
                        }
                    }

                    if (fileToUpdate != null)
                    {
                        if (this.Question(this.locRM.GetString("Update")))
                        {
                            var commonFolder = Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFilesX86);
                            commonFolder += "\\microsoft shared\\MSEnv\\";
                            var launcher = commonFolder + "VSLauncher.exe";

                            var pi = new System.Diagnostics.ProcessStartInfo();
                            pi.FileName = launcher;
                            pi.Arguments = fileToUpdate;

                            var p = new System.Diagnostics.Process();

                            p.StartInfo = pi;
                            p.Start();
                        }
                    }
                }
            }
        }