web-dev-qa-db-fra.com

Comment obtenir la version actuelle du produit en C #?

Comment puis-je obtenir par programme la version actuelle du produit en C #? 

Mon code:

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

J'obtiens VersionNumber = 1.0.0.0, mais la version actuelle est 1.0.0.12.

49
Nivid Dholakia

J'ai eu la réponse à ma question, il suffit de donner la référence à System.Deployment.Application et même si cela ne fonctionnera pas dans le développement de Visual Studio, mais cela fonctionnera une fois l'application déployée.

  //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

Il existe trois versions: Assembly, file et product. Pour obtenir la version du produit:

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

Une autre approche pour obtenir la version du produit (spécifiée à l’aide de AssemblyInformationalVersionAttribute ) est la suivante:

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

Toutes ces réponses demandent à l’Assemblée avec .GetExecutingAssembly().
Si vous avez ce code dans une dll, il renverra le numéro de version de la dll.

Échangez cet appel contre GetCallingAssembly() pour obtenir l'emplacement dans votre code qui vous intéresse.

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

Essaye ça: 

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

Consultez également l'article this MSDN sur la propriété AssemblyName.Version.

2
Glenn Ferrie

En C #, vous devez utiliser la réflexion et les diagnostics

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

J'ai eu le même problème que la plupart d'entre vous. Il afficherait toujours la version 1.0.0.0 sauf si vous êtes entré manuellement et avez mis à jour assemblyInfo.cs vers la version que vous souhaitez afficher. Je pense que nous voulions afficher le numéro de version-révision de publication sous les propriétés du projet, mais cela ne semble pas être une option (d'après ce que j'ai lu). 

Je ne sais pas si cela existait à l'époque où ces commentaires ont été formulés, mais maintenant, dans le fichier assemblyinfo.cs , il existe un moyen de le faire automatiquement. Moi aussi, je ne me suis pas contenté de devoir les mettre à jour manuellement à chaque publication. 

// 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.*")]

Cela * s'incrémente automatiquement à chaque publication. Ce ne sera pas le même que le numéro de publication que vous voyez sous les propriétés du projet, mais il augmente et est définitivement meilleur que de le faire à la main. 

Vous avez ensuite plusieurs options pour l'afficher comme mentionné ci-dessus. J'ai personnellement utilisé ce que j'ai trouvé sur un autre site

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