2010-06-10 69 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

相关问题