it-swarm.com.de

Wie bekomme ich die Assembly-Dateiversion?

In AssemblyInfo gibt es zwei Assembly-Versionen:

  1. AssemblyVersion: Geben Sie die Version der Assembly an, die zugeordnet werden soll.
  2. AssemblyFileVersion: Weist einen Compiler an, eine bestimmte Versionsnummer für die Win32-Dateiversionsressource zu verwenden. Die Win32-Dateiversion muss nicht mit der Versionsnummer der Assembly übereinstimmen.

Ich kann den Assembly Version mit der folgenden Codezeile erhalten:

Version version = Assembly.GetEntryAssembly().GetName().Version;

Aber wie kann ich den Assembly File Version bekommen?

667
Enyra

Sehen Sie sich meinen obigen Kommentar an, um zu klären, was Sie wirklich wollen. Ich hoffe, das ist es:

System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(Assembly.Location);
string version = fvi.FileVersion;
813
Xiaofu

Es gibt drei Versionen : Assembly , Datei und Produkt . Sie werden von verschiedenen Funktionen verwendet und nehmen unterschiedliche Standardwerte an, wenn Sie sie nicht explizit angeben.

string assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString(); 
string assemblyVersion = Assembly.LoadFile('your Assembly file').GetName().Version.ToString(); 
string fileVersion = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).FileVersion; 
string productVersion = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).ProductVersion;
184
Check6

Wenn ich auf die Anwendungsdateiversion zugreifen möchte (was in Baugruppeninformationen -> Dateiversion festgelegt ist), sagen wir, um den Text einer Beschriftung beim Laden des Formulars so festzulegen, dass die Version angezeigt wird, die ich gerade verwendet habe

versionlabel.Text = "Version " + Application.ProductVersion;
60
syntap

UPDATE: Wie von Richard Grimes in mein zitierter Beitrag , @Iain und @Dmitry Lobanov erwähnt, ist meine Antwort in der Theorie richtig, in der Praxis jedoch falsch.

Wie ich mich aus unzähligen Büchern usw. hätte erinnern sollen, werden diese Eigenschaften, während man sie mit dem [Assembly: XXXAttribute] einstellt, vom Compiler hochgefahren und in die VERSIONINFO -Ressource gestellt.

Aus dem obigen Grund müssen Sie den Ansatz in @ Xiaofus Antwort verwenden, da die Attribute entfernt werden, nachdem das Signal aus ihnen extrahiert wurde.


 öffentliche statische Zeichenfolge GetProductVersion () 
 {
 var attribute = (AssemblyVersionAttribute) Assembly 
 .GetExecutingAssembly () 
 .GetCustomAttributes (typeof (AssemblyVersionAttribute) , true) 
 .Single (); 
 return attribute.InformationalVersion; 
} 

(Von http://bytes.com/groups/net/420417-assemblyversionattribute - Wenn Sie dort nach einem anderen Attribut suchen, ersetzen Sie dieses durch das oben angegebene.)

21
Ruben Bartelink

Benutze das:

((AssemblyFileVersionAttribute)Attribute.GetCustomAttribute(
    Assembly.GetExecutingAssembly(), 
    typeof(AssemblyFileVersionAttribute), false)
).Version;

Oder dieses:

new Version(System.Windows.Forms.Application.ProductVersion);
3
user6438653