Questo è quello che uso io:
///
/// FileVersion dell'assembly
///
///
///
public static string GetAssemblyFileVersion()
{
string ret = string.Empty;
try
{
object[] list =
Assembly.GetCallingAssembly().GetCustomAttributes(typeof(AssemblyFileVersionAttribute), false);
if (list.Length > 0)
{
AssemblyFileVersionAttribute att = (AssemblyFileVersionAttribute)list[0];
ret = att.Version;
}
}
catch (Exception)
{
//In questo caso non ci interessa nulla delle eccezioni
}
return (ret);
}
Questo overload di GetAssemblyFileVersion è in una Dll di funzioni base
pertanto utilizzo Assembly.GetCallingAssembly per ottenere la versione dell'assembly ove
il metodo viene chiamato.
Puoi usare varie altre chiamate:
Assembly.GetAssembly(); se lo fai sull'assembly corrente
Assembly.GetExecutingAssembly(); se lo fai su quello in esecuzione
e così via.
Se vuoi sapere la file version di un assembly che non stai usando
invece puoi usare questa chiamata:
///
/// FileVersion dell'assembly
///
///
///
public static string GetAssemblyFileVersion(string pAssemblyName)
{
string ret = string.Empty;
try
{
object[] list =
Assembly.Load(pAssemblyName).GetCustomAttributes(typeof(AssemblyFileVersionAttribute), false);
if (list.Length > 0)
{
AssemblyFileVersionAttribute att = (AssemblyFileVersionAttribute)list[0];
ret = att.Version;
}
}
catch (Exception)
{
//In questo caso non ci interessa nulla delle eccezioni
}
return (ret);
}
che carica l'assembly in base al suo nome.