2010-09-17 81 views
0
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();C#整数解析/比较

+3

你能否阐述一下你得到什么结果还是什么问题? – CodingGorilla 2010-09-17 18:46:03

+0

而不是Regex.Split(data,“version =”);为什么不简单data.Substring(“版本=”。长度); – 2010-09-17 20:52:58

回答

6

您似乎希望检查正在运行的程序的版本是否低于您刚刚下载的版本字符串。

而不是使用整数比较,你可以做版本比较。 从你下载一个字符串创建一个版本的对象:var downloadedVersion = new Version(versionStringDownloadedFromWeb);和比较这对大会的版本:

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

你可以做到这一点,因为版本的对象实现了IComparable接口。

0

Assembly.GetExecutingAssembly().GetName().Version.ToString();将采用格式“x.y.z.q”,并且不能被解析为整数。尝试

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

,这将给你的主版本号为int