First of all, there are two possible 'versions' that you might be interested in:
Windows filesystem file version, applicable to all executable files
Assembly build version, which is embedded in a .NET assembly by the compiler (obviously only applicable to .NET assembly dll and exe files)
In the former case, you should use Ben Anderson's answer; in the latter case, use AssemblyName.GetAssemblyName(@"c:\path\to\file.dll").Version
, or Tataro's answer, in case the assembly is referenced by your code.
Note that you can ignore all the answers that use .Load()
/.LoadFrom()
methods, since these actually load the assembly in the current AppDomain - which is analogous to cutting down a tree to see how old it is.