C # Integer анализ / сравнение - PullRequest
       12

C # Integer анализ / сравнение

0 голосов
/ 17 сентября 2010
HttpWebRequest web;
        try
        {
            web = (HttpWebRequest)HttpWebRequest.Create("website.name");

            WebResponse Response = web.GetResponse();
            Stream WebStream = Response.GetResponseStream();
            StreamReader Reader = new StreamReader(WebStream);
            string data = Reader.ReadToEnd();

            Reader.Close();
            WebStream.Close();
            Response.Close();

            string[] ver = Regex.Split(data, "version=");

            if (int.Parse(ver[1]) == int.Parse(appVersion))
            {
                tss1.Text = "Status : You currently have the latest version";               
            }
            else
            {
                tss1.Text ="Status : A new version of app is available.";
                System.Diagnostics.Process.Start("website.name");
            } 
        }
        catch (Exception ex)
        {
            tss1.Text = "Status : Update check failed.";
            Debug.Write(ex.ToString());
        }

Я пытаюсь использовать приведенный выше код для подключения к веб-странице и найти номер последней версии для приложения, которое прекрасно работает.Моя проблема возникает при попытке сравнить число, найденное на веб-странице, с числом, предоставленным appVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString();

Ответы [ 2 ]

6 голосов
/ 17 сентября 2010

Похоже, вы хотите проверить, является ли версия запущенной программы ниже, чем строка версии, которую вы только что загрузили.

Вместо использования целочисленного сравнения вы можете просто сделать сравнение версий. Создайте объект Version из загруженной строки: var downloadedVersion = new Version(versionStringDownloadedFromWeb); и сравните ее с версией сборок:

if (Assembly.GetExecutingAssembly().GetName().Version < downloadedVersion) 
{
  // Your version is outdated!
}

Вы можете сделать это, так как объекты Version реализуют интерфейс IComparable.

0 голосов
/ 18 сентября 2010

Assembly.GetExecutingAssembly().GetName().Version.ToString(); будет иметь формат "x.y.z.q" и не может быть проанализирован как целое число. попробуйте

var appVersion = Assembly.GetExecutingAssembly().GetName().Version.Major;

, который даст вам номер основной версии как int

...