33 votes

Utilisation de C # AssemblyFileVersion dans un programme

Je suis en train de travailler sur un programme, et je vais essayer d'affichage de l'assemblée FICHIER version

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

Pour le moment, cela ne renvoie que les deux premiers numéros de version dans le "AssemblyVersion", pas "AssemblyFileVersion." J'aimerais vraiment juste référence à la AssemblyFileVersion plutôt que de stocker une variable interne appelé "Version" que je viens de mettre à jour ce et la version de l'assembly...

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

C'est mon AssemblyFileVersion de AssemblyInfo.cs. J'aimerais simplement référence à la "3.5.x", pas le "1.0.*" :/

Merci, Zack

34voto

Diadistis Points 6892

Utilisez ProductMajorPart / ProductMinorPart au lieu de 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);
        }
    }
 

6voto

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 ());

3voto

Mark Menchavez Points 345
    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();
    }

2voto

sipwiz Points 15291

Pour obtenir la version de l'assembly en cours d'exécution, vous pouvez utiliser:

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

La classe Assembly peut également charger des fichiers et accéder à tous les assemblys chargés dans un processus.

1voto

shahkalpesh Points 21553

Je suppose que vous devrez utiliser la classe FileVersionInfo.

System.Diagnostics.FileVersionInfo.GetVersionInfo(FullpathToAssembly)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X