Actualizaciones:
Actualización del 21/Nov/2007:
He modificado algunas de las propiedades y he añadido nuevas.
En el texto del artículo (por dejar el original) solo digo que implementa
Title,
Copyright y Version, pero ahora tiene también las propiedades:
ProductName,
CompanyName, Trademark, Description y FileVersion
(esta última no está
en el objeto Info de VB).
Además la propiedad Version ahora devuelve la versión del ensamblado,
mientras que
FileVersion es la versión mostrada por Windows.
Title ahora muestra el valor de FileDescription (que es en
realidad el título del
ensamblado), antes devolvía ProductName que en realidad es la
propiedad ProductName
que devuelve en VB.
También he añadido el código para usar el "tipo" My.Application.Info
con un alias para
que sea más fácil de manejar, tal como se muestra en el código de ejemplo.
Introducción:
Al convertir hoy el ejemplo de
Buscar ficheros de
Visual Basic 2005 a Visual C# 2005, me he topado con el objeto
My.Application.Info
que suelo usar de vez en cuando, así que... como quería mostrar también el
código completo (en el zip) de la utilidad de buscar ficheros para C#,
pues... me he tenido que fabricar el código correspondiente a ese objeto de
Visual Basic 2005, que como puedes ver es bastante simple de simular, y
aunque en esta primera "conversión" o adaptación solo he tenido en cuenta
tres propiedades: Title, Copyright y
Version, seguro que te resultará fácil (si así lo quieres)
convertir el resto de propiedades.
Nota:
Aquí también incluyo el código para
simular My.Settings que ya te mostré hace unas fechas.
Como vas a comprobar es súper simple, pero... creo que te puede servir...
a mi me sirve, además de que al tenerlo aquí publicado, me ahorro el tener
que buscar en mi disco, je, je.
Este código, lo pegas dentro del espacio de nombres que crea el propio
diseñador de formularios. Aunque también lo puedes poner en una clase
aparte, pero que esté en el mismo espacio de nombres que el proyecto.
// Simular (en parte) el objeto My de Visual Basic 2005 (o superior)
// Nuevas propiedades (21/Nov/07)
// My.Settings y My.Application.Info
static class My
{
// My.Settings
public static Properties.Settings Settings
{
get
{
return Properties.Settings.Default;
}
}
// My.Application.Info
public static class Application
{
public static class Info
{
static System.Diagnostics.FileVersionInfo fvi;
static System.Reflection.Assembly ensamblado;
static AssemblyName an;
static Info()
{
ensamblado = System.Reflection.Assembly.GetExecutingAssembly();
fvi = FileVersionInfo.GetVersionInfo(ensamblado.Location);
an = ensamblado.GetName();
}
/// <summary>
/// La versión del ensamblado
/// Equivale al atributo AssemblyVersion
/// </summary>
public static Version Version
{
get
{
return an.Version;
}
}
/// <summary>
/// La versión del ensamblado (FileVersion)
/// equivale al atributo: AssemblyFileVersion
/// </summary>
public static Version FileVersion
{
get
{
return new Version(fvi.FileVersion);
}
}
public static string Title
{
get
{
return fvi.FileDescription;
// antes mostraba esto: fvi.ProductName;
}
}
public static string Copyright
{
get
{
return fvi.LegalCopyright;
}
}
public static string ProductName
{
get
{
return fvi.ProductName;
}
}
public static string CompanyName
{
get
{
return fvi.CompanyName;
}
}
public static string Trademark
{
get
{
return fvi.LegalTrademarks;
}
}
public static string Description
{
get
{
return fvi.Comments;
}
}
}
}
}
Para usarlo, puedes hacer algo como esto:
this.txtDir.Text = My.Settings.Directorio;
this.txtFiltro.Text = My.Settings.Filtro;
this.chkConSubDir.Checked = My.Settings.conSubDir;
this.chkIgnorarError.Checked = My.Settings.IgnorarError;
this.LabelInfo.Text = My.Application.Info.Title +
" v" + My.Application.Info.Version.ToString() +
" - " + My.Application.Info.Copyright;
Si no quieres estar repitiendo lo de My.Application.Info, puedes
agregar un "alias" al
tipo de
esta forma:
using miInfo = My.Application.Info;
Creando ese alias, puedes usarlo tal como te muestro a continuación:
this.Text = String.Format("Acerca de {0}", miInfo.Title);
this.LabelProductName.Text = miInfo.Title;
this.labelProduct.Text = String.Format("{0} v{1}", miInfo.Title, miInfo.Version);
// Mostrar la versión del ensamblado y el valor de Windows
this.LabelVersion.Text = "Versión " + miInfo.Version.ToString() + " (" + miInfo.FileVersion + ")";
this.LabelCopyright.Text = String.Format("{0} ({1})", miInfo.Copyright, miInfo.CompanyName);
this.LabelCompanyName.Text = miInfo.Trademark;
this.TextBoxDescription.Text = miInfo.Description;
Nota:
El using deberías ponerlo después del namespace del proyecto donde
esté definida la
clase My.
En el caso de que esa clase esté en otro espacio de nombres, tendrás que
añadírselo al using,
por ejemplo, si el espacio de nombres en el que está esa clase My se
llama Utilidades,
tendrás que hacer algo así:
using miInfo = Utilidades.My.Application.Info;
Y esto es todo...
Espero que te sea de utilidad.
Nos vemos.
Guillermo