2010-06-10 53 views
3

我需要以編程方式獲取Windows服務的版本並將其存儲在字符串中。然後,我將在ProjectInstaller類中將版本追加到我的顯示名稱和服務名稱中。現在我得到一個空字符串,我無法調試我的安裝項目。這裏是我當前的代碼:如何以編程方式獲得Windows服務的版本信息

 string version = null; 
     try 
     { 
      Assembly exeAssembly = Assembly.GetEntryAssembly(); 
      Type attrType = typeof(AssemblyFileVersionAttribute); 
      object[] attributes = exeAssembly.GetCustomAttributes(attrType, false); 
      if (attributes.Length > 0) 
      { 
       AssemblyFileVersionAttribute verAttr = (AssemblyFileVersionAttribute)attributes[0]; 
       if (verAttr != null) 
       { 
        version = verAttr.Version; 
       } 
      } 
     } 
     catch 
     { 
     } 
     if (version == null) 
     { 
      version = string.empty; 
     } 

回答

8
var version = Assembly.GetExecutingAssembly().GetName().Version; 
return version.ToString(); 

將在1.0.0.0形式返回。

或者,您可以使用version.Major + "." + version.Minor來獲取前兩個數字。

或者,如果你想要的文件的版本...

var fvi = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location); 
return fvi.FileVersion; 
+0

這個工作!如何保留前導零(即050000.01.01.00顯示爲50000.1.1.0)? – jmac 2010-06-11 13:24:14

+0

如果您知道需要多少前導零,您可以使用'version.Major.ToString()。PadLeft(10,'0')+「。」之類的東西。 + version.Minor'等 – 2010-06-11 14:02:15

+0

此外,如果這個答案對你有幫助,你會介意點擊「向上箭頭」投票嗎?謝謝。 – 2010-06-11 14:03:12

相關問題