What is the best method for displaying major/minor versions in a C# console application?
The System.Windows.Forms
namespace includes a ProductVersion
class that can be used to display the name/version information set via the Visual Studio project properties (Assembly Information). As such, here is my current mechanism:
Console.WriteLine("{0} ({1})",
System.Windows.Forms.Application.ProductName,
System.Windows.Forms.Application.ProductVersion);
Why is this part of Forms
? Is this appropriate for a Console application?
Assembly.GetExecutingAssembly().GetName().Version
Also, you can still use the class, you just have to reference the containing assembly. It’s no biggie.
Assembly.GetExecutingAssembly().GetName().Version
is not the same as Application.ProductVersion
(but may be good enough depending on your environment.
As can be seen with Lutz Reflector, Application.ProductVersion
first attempts to use the AssemblyInformationalVersion attribute from Assembly.GetEntryAssembly()
if it’s present, and if GetEntryAssembly()
is not null.
Otherwise it uses the file version of the executable file.
I don’t see any reason not to use Application.ProductVersion
in a console application.
what about the following line
Console.WriteLine("FileVersionInfo::ProductVersion : {0}",
System.Diagnostics.Process.GetCurrentProcess().MainModule.FileVersionInfo.ProductVersion);