C # Assembly Nutzung innerhalb eines Programms
-
22-08-2019 - |
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
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 ************