Frage

Ich arbeite an einem Programm, und ich versuche, die Montage anzuzeigen Datei 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);
        }
    }

Im Moment dies gibt nur die ersten zwei Versionsnummern in der „Assembly“, nicht „Assembly.“ Ich möchte wirklich nur die Assembly verweisen, anstatt speichern eine interne Variable namens „Version“, die ich habe zu aktualisieren sowohl dieses als auch die Montage Version ...

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

Das ist mein Assembly von AssemblyInfo.cs. Ich möchte nur den "3.5.x" Teil verweisen, nicht die "1.0. *": /

Danke, Zack

War es hilfreich?

Lösung

Verwenden ProductMajorPart / ProductMinorPart statt 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);
        }
    }

Andere Tipps

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

Um die Version des aktuell ausgeführten Assembly bekommen können Sie:

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

Die Klasse Assembly kann auch Dateien laden und Zugriff auf alle die in einem Prozess geladen Baugruppen.

Ich denke, Sie haben Fileversioninfo-Klasse.

System.Diagnostics.FileVersionInfo.GetVersionInfo(FullpathToAssembly)

 protected void Application_Start(object sender, EventArgs e)
 {
     _log.InfoFormat("*************{0} **** Version: {1}************  ", Assembly.GetExecutingAssembly().GetName().Name, Assembly.GetExecutingAssembly().GetName().Version);
  }

Output

  

INFO Global - ************* CustomerFile **** Version: 1.0.17.2510 ************

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top