wake-up-neo.net

Wie erhalte ich die aktuelle Produktversion in C #?

Wie kann ich programmgesteuert die aktuelle Produktversion in C # beziehen? 

Mein Code:

VersionNumber = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();

Ich erhalte VersionNumber = 1.0.0.0, aber die aktuelle Version ist 1.0.0.12.

49
Nivid Dholakia

Ich habe die Antwort auf meine Frage erhalten. Geben Sie einfach den Verweis auf System.Deployment.Application an. Obwohl dies bei der Entwicklung des Visual Studios nicht funktioniert, funktioniert es nach der Bereitstellung der Anwendung.

  //using System.Deployment.Application;
  //using System.Reflection;
   public string CurrentVersion
    {
        get
        {
            return ApplicationDeployment.IsNetworkDeployed
                   ? ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString()
                   : Assembly.GetExecutingAssembly().GetName().Version.ToString();
        }
    }      
26
Nivid Dholakia

Es gibt drei Versionen: Baugruppe, Datei und Produkt. So erhalten Sie die Produktversion:

using System.Reflection;
using System.Diagnostics;
Assembly assembly = Assembly.GetExecutingAssembly();
FileVersionInfo fileVersionInfo = FileVersionInfo.GetVersionInfo(Assembly.Location);
string version = fileVersionInfo.ProductVersion;
66
Tony Hou
System.Reflection.Assembly.GetEntryAssembly().GetName().Version
15
Ketan H Kanada

Ein anderer Ansatz, um die Produktversion (die mit AssemblyInformationalVersionAttribute angegeben wird) zu erhalten, ist

private static string AssemblyProductVersion
{
    get
    {
        object[] attributes = Assembly.GetExecutingAssembly()
            .GetCustomAttributes(typeof(AssemblyInformationalVersionAttribute), false);
        return attributes.Length == 0 ?
            "" :
            ((AssemblyInformationalVersionAttribute)attributes[0]).InformationalVersion;
    }
}
6
Richard Everett

Alle diese Antworten verlangen nach der Versammlung mit .GetExecutingAssembly().
Wenn Sie diesen Code in einer DLL haben, wird die DLL-Versionsnummer zurückgegeben.

Tauschen Sie diesen Aufruf für GetCallingAssembly() aus, um die Stelle im Code zu erhalten, die Sie wissen wollten.

/// <summary>
/// Returns version like 2.1.15
/// </summary>
public static String ProductVersion
{
    get
    {
        return new Version(FileVersionInfo.GetVersionInfo(Assembly.GetCallingAssembly().Location).ProductVersion).ToString();
    }
}
3

Versuche dies: 

var thisApp = Assembly.GetExecutingAssembly();
AssemblyName name = new AssemblyName(thisApp.FullName);
VersionNumber = "v. " + name.Version;

Siehe auch this MSDN-Artikel zur AssemblyName.Version-Eigenschaft.

2
Glenn Ferrie

In C # müssen Sie Reflexion und Diagnose verwenden

Assembly assembly = Assembly.GetExecutingAssembly();
FileVersionInfo fileVersionInfo = FileVersionInfo.GetVersionInfo(Assembly.Location);
string version = fileVersionInfo.ProductVersion;
2
Frank Wu

Ich hatte das gleiche Problem wie die meisten von Ihnen. Es wird immer 1.0.0.0 angezeigt, es sei denn, Sie haben AssemblyInfo.cs manuell auf die Version aktualisiert, die Sie anzeigen wollten. Ich denke, wir wollten die Versionsnummer der Veröffentlichungsversion unter den Projekteigenschaften anzeigen, aber das scheint keine Option zu sein (von dem, was ich gelesen habe). 

Ich bin mir nicht sicher, ob diese Kommentare bereits vorhanden waren, aber jetzt in der Datei assemblyinfo.cs gibt es eine Möglichkeit, dies automatisch zu tun. Ich war auch nicht damit zufrieden, diese bei jedem Publizieren manuell aktualisieren zu müssen. 

// You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [Assembly: AssemblyVersion("1.0.*")] [Assembly: AssemblyVersion("1.0.*")]

Das * erhöht sich bei jeder Veröffentlichung automatisch. Es ist nicht identisch mit der Veröffentlichungsnummer, die Sie unter den Projekteigenschaften sehen, aber es erhöht sich definitiv und ist definitiv besser, als es von Hand zu tun. 

Sie haben dann einige Optionen, um es wie oben erwähnt anzuzeigen. Ich persönlich habe das verwendet, was ich auf einer anderen Seite gefunden habe

Version version = Assembly.GetExecutingAssembly().GetName().Version; lblRevision.Text = String.Format("{0}.{1}.{2}.{3}", version.Major, version.Minor, version.Build, version.Revision);

0
blind Skwirl