如何获得正在执行的程序集版本?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (20)

我试图使用以下代码在C#3.0中获得正在执行的程序集版本:

var assemblyFullName = Assembly.GetExecutingAssembly().FullName;
var version = assemblyFullName .Split(',')[1].Split('=')[1];

是否有其他适当的方法?

提问于
用户回答回答于

无论应用程序类型如何,都可以调用:

Assembly.GetExecutingAssembly().GetName().Version

如果专门查找产品版本,则可以通过应用程序访问。

Application.ProductVersion

使用GetExecutingAssembly对于程序集引用,并不总是一个选项。因此,我个人认为在项目中创建静态助手类很有用,在这些项目中,我可能需要引用底层程序集或程序集版本:

// A sample assembly reference class that would exist in the `Core` project.
public static class CoreAssembly
{
    public static readonly Assembly Reference = typeof(CoreAssembly).Assembly;
    public static readonly Version Version = Reference.GetName().Version;
}

然后我就能清晰地引用CoreAssembly.Version在我的代码中。

用户回答回答于

在MSDN中,

检索表示当前程序集的程序集对象的推荐方法是使用Type.Assembly在程序集中找到的类型的属性。

以下示例说明:

using System;
using System.Reflection;

public class Example
{
    public static void Main()
    {
        Console.WriteLine("The version of the currently executing assembly is: {0}",
                          typeof(Example).Assembly.GetName().Version);
    }
}

/* This example produces output similar to the following:
   The version of the currently executing assembly is: 1.1.0.0

当然,这与Helper类“公共静态类CoreAssembly”的答案非常相似,但是,如果知道至少有一种类型的执行程序集,那么创建一个帮助类并不是强制性的,它可以节省时间。

扫码关注云+社区