如何通过编程获取Windows服务的版本信息

4

我需要以编程的方式获取我的Windows服务版本并将其存储在字符串中。然后,在ProjectInstaller类中,我将把版本追加到我的显示名称和服务名称中。目前,我得到了一个空字符串,而且我很难调试我的安装程序。这是我的当前代码:

        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;
        }
1个回答

10
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;

这个有效!如何保留前导零(即,050000.01.01.00 显示为 50000.1.1.0)? - jmac
如果您知道需要多少个前导零,您可以使用类似于 version.Major.ToString().PadLeft(10, '0') + "." + version.Minor 的东西。 - John Gietzen
另外,如果这个答案对您有帮助,您是否介意点击“上箭头”为其投票?谢谢。 - John Gietzen
我点击了勾选标记。当我尝试点击“向上箭头”时,它显示“投票需要15点声望”。 - jmac

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接