Использование C # AssemblyFileVersion в программе - PullRequest
33 голосов
/ 31 марта 2009

Я работаю над программой и пытаюсь отобразить сборку 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")]

Это мой AssemblyFileVersion из AssemblyInfo.cs. Я хотел бы просто сослаться на часть «3.5.x», а не на «1.0. *»: /

Спасибо, Zack

Ответы [ 6 ]

34 голосов
/ 31 марта 2009

Используйте 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);
        }
    }
6 голосов
/ 07 декабря 2009
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 ());
3 голосов
/ 23 августа 2011
    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();
    }
2 голосов
/ 31 марта 2009

Чтобы получить версию текущей исполняемой сборки, вы можете использовать:

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

Класс Assembly также может загружать файлы и получать доступ ко всем сборкам, загруженным в процесс.

1 голос
/ 31 марта 2009

Полагаю, вам придется использовать класс FileVersionInfo.

System.Diagnostics.FileVersionInfo.GetVersionInfo(FullpathToAssembly)

0 голосов
/ 26 октября 2018
 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 ************

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...