c# - Obteniendo la versión de ensamblaje de AssemblyInfo.cs
asp.net-mvc (2)
Como indica la documentación, Assembly.GetExecutingAssembly()
obtiene el ensamblaje en el que se compiló el código de llamada.
Si desea ser más explícito (y más rápido), puede escribir typeof(SomeType).Assembly
, donde SomeType
es cualquier tipo en el proyecto que está buscando.
Tenemos un archivo AssemblyInfo.cs
en nuestra aplicación web, pero tenemos otros proyectos en la misma solución. En su mayoría son bibliotecas de clase. Me piden que muestre la versión de AssemblyInfo.cs
de AssemblyInfo.cs
en nuestra interfaz de usuario. He encontrado la siguiente solución en SO de C # AssemblyFileVersion uso dentro de un programa
using System.Reflection;
Version version = Assembly.GetExecutingAssembly().GetName().Version;
o
using System.Reflection;
using System.IO;
FileVersionInfo fv = System.Diagnostics.FileVersionInfo.GetVersionInfo
(Assembly.GetExecutingAssembly().Location);
Console.WriteLine("AssemblyVersion : {0}",
Assembly.GetExecutingAssembly().GetName().Version.ToString());
Console.WriteLine ("AssemblyFileVersion : {0}" ,
fv.FileVersion.ToString ());
Pero esto me confunde un poco. Dice GetExecutingAssembly()
y ¿qué pasa si se está ejecutando en otro conjunto desde otras bibliotecas de clase? ¿Se recuperarán esos códigos del archivo AssemblyInfo.cs
que reside en el Proyecto Web todo el tiempo? (que es lo que quiero)
Si quieres leer el archivo, entonces puedes hacer esto.
string path = @"d:/AssemblyInfo.cs";
if (File.Exists(path))
{
// Open the file to read from.
string[] readText = File.ReadAllLines(path);
var versionInfoLines = readText.Where(t => t.Contains("[assembly: AssemblyVersion"));
foreach (string item in versionInfoLines)
{
string version = item.Substring(item.IndexOf(''('') + 2, item.LastIndexOf('')'') - item.IndexOf(''('') - 3);
Console.WriteLine(version);
}
}
Salida
1.0.0.0