33

我正在开发一个程序,我正在尝试显示程序集FILE版本

    public static string Version
    {
        get
        {
            Assembly asm = Assembly.GetExecutingAssembly();
            FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(asm.Location);
            return String.Format("{0}.{1}", fvi.FileMajorPart, fvi.FileMinorPart);
        }
    }

目前,这只返回“AssemblyVersion”中的前两个版本号,而不是“AssemblyFileVersion”。我真的很想只引用 AssemblyFileVersion 而不是存储一个名为“Version”的内部变量,我必须同时更新这个和程序集版本......

[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyFileVersion("3.5.0")]

那是我来自 AssemblyInfo.cs 的 AssemblyFileVersion。我只想引用“3.5.x”部分,而不是“1.0.*”:/

谢谢,扎克

4

6 回答 6

34

使用 ProductMajorPart/ProductMinorPart 而不是 FileMajorPart/FileMinorPart :

    public static string Version
    {
        get
        {
            Assembly asm = Assembly.GetExecutingAssembly();
            FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(asm.Location);
            return String.Format("{0}.{1}", fvi.ProductMajorPart, fvi.ProductMinorPart);
        }
    }
于 2009-03-31T00:44:04.227 回答
6
using System.Reflection;
using System.IO;

FileVersionInfo fv = System.Diagnostics.FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location);

Console.WriteLine("AssemblyVersion : {0}", Assembly.GetExecutingAssembly().GetName().Version.ToString());

Console.WriteLine ("AssemblyFileVersion : {0}" , fv.FileVersion.ToString ());
于 2009-12-07T10:46:41.990 回答
3
    var fileVersion = GetCustomAttributeValue<AssemblyFileVersionAttribute>(assembly, "Version");

    private static string GetCustomAttributeValue<T>(Assembly assembly, string propertyName)
        where T : Attribute
    {
        if (assembly == null || string.IsNullOrEmpty(propertyName)) return string.Empty;

        object[] attributes = assembly.GetCustomAttributes(typeof(T), false);            
        if (attributes.Length == 0) return string.Empty;

        var attribute = attributes[0] as T;
        if (attribute == null) return string.Empty;

        var propertyInfo = attribute.GetType().GetProperty(propertyName);
        if (propertyInfo == null) return string.Empty;

        var value = propertyInfo.GetValue(attribute, null);
        return value.ToString();
    }
于 2011-08-23T04:55:20.153 回答
2

要获取当前正在执行的程序集的版本,您可以使用:

using System.Reflection;
Version version = Assembly.GetExecutingAssembly().GetName().Version;

Assembly 类还可以加载文件并访问进程中加载​​的所有程序集。

于 2009-03-31T00:45:28.030 回答
1

我想你将不得不使用 FileVersionInfo 类。

System.Diagnostics.FileVersionInfo.GetVersionInfo(FullpathToAssembly)

于 2009-03-31T00:37:17.957 回答
0
 protected void Application_Start(object sender, EventArgs e)
 {
     _log.InfoFormat("*************{0} **** Version: {1}************  ", Assembly.GetExecutingAssembly().GetName().Name, Assembly.GetExecutingAssembly().GetName().Version);
  }

输出

INFO Global - *************CustomerFile **** 版本:1.0.17.2510************

于 2018-10-25T22:14:17.507 回答