2010-09-17 97 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