28 Stimmen

Methode für die Anwendungsversion einer Konsolen-Dienstprogramm-Anwendung

Was ist die beste Methode für die Anzeige von Major/Minor-Versionen in einer C#-Konsolenanwendung?

Le site System.Windows.Forms Namespace enthält eine ProductVersion Klasse, die verwendet werden kann, um die über die Visual Studio-Projekteigenschaften (Assembly Information) eingestellten Namens-/Versionsinformationen anzuzeigen. Als solche, hier ist meine aktuelle Mechanismus:

Console.WriteLine("{0} ({1})", 
   System.Windows.Forms.Application.ProductName, 
   System.Windows.Forms.Application.ProductVersion);

Warum ist dieser Teil von Forms ? Ist dies für eine Konsolenanwendung geeignet?

64voto

Assembly.GetExecutingAssembly().GetName().Version

Außerdem können Sie die Klasse weiterhin verwenden, Sie müssen nur auf die enthaltende Assembly verweisen. Das ist keine große Sache.

9voto

Joe Punkte 117971

Assembly.GetExecutingAssembly().GetName().Version ist nicht dasselbe wie Application.ProductVersion (kann aber je nach Umgebung gut genug sein.

Wie beim Lutz-Reflektor zu sehen ist, Application.ProductVersion erste Versuche zur Nutzung der AssemblyInformationVersion Attribut von Assembly.GetEntryAssembly() wenn es vorhanden ist, und wenn GetEntryAssembly() ist nicht null.

Andernfalls wird die Dateiversion der ausführbaren Datei verwendet.

Ich sehe keinen Grund, nicht zu verwenden Application.ProductVersion in einer Konsolenanwendung.

3 Stimmen

Ich auch, aber dann sieht aus wie diese Methoden schlecht in den System.Windows.Forms-Namensraum befinden, richtig?

1 Stimmen

Nur ein Hinweis zur Information: Wenn Sie Folgendes verwenden [assembly: AssemblyVersion("1.0.*")] in Ihrem AssemblyInfo.cs , Application.ProductVersion wird zurückgegeben 1.0.* während Assembly.GetExecutingAssembly().GetName().Version gibt die tatsächlich erzeugte Version zurück (z.B.. 1.0.6830.22375 )

1voto

tilli Punkte 121

Was ist mit der folgenden Zeile

Console.WriteLine("FileVersionInfo::ProductVersion : {0}",
  System.Diagnostics.Process.GetCurrentProcess().MainModule.FileVersionInfo.ProductVersion);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X