Je travaille sur un programme et j'essaie d'afficher l'assemblyFICHIERversion
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 "AssemblyVersion", et non "AssemblyFileVersion". J'aimerais vraiment juste faire référence à AssemblyFileVersion plutôt que de stocker une variable interne appelée "Version" que je dois mettre à jour à la fois pour cette version et celle de Assembly ...
[Assembly: AssemblyVersion("1.0.*")]
[Assembly: AssemblyFileVersion("3.5.0")]
C'est mon AssemblyFileVersion de AssemblyInfo.cs. Je voudrais juste faire référence à la partie "3.5.x", pas à la "1.0. *": /
Merci, Zack
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);
}
}
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();
}
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.
Je suppose que vous devrez utiliser la classe FileVersionInfo.
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);
}
Sortie
INFO Global - ************* CustomerFile **** Version: 1.0.17.2510 *************