martes, 7 de julio de 2015

Receta C# No. 5-5: Obtener Información de Versionamiento de un Archivo

Índice

0. Introducción
1. Problema
2. Solución
3. Discusión de la Solución
4. Práctica: Código C#
5. Conclusiones
6. Glosario
7. Literatura & Enlaces

0. Introducción

Quinta receta de la serie de archivos, directorios y entrada y salida. Ahora veremos cómo obtener la información de versionamiento de un archivo. Estos datos nos puede ser útil, por ejemplo, para mantener un historial de versiones de los archivos creados por un usuario o un fabricante de software. Un método de la clase FileVersionInfo será relevante para la obtención de esta información.

1. Problema

Un programador nos está pidiendo que le enseñemos el proceso y los artefactos de software del Framework .NET para obtener la información de versionamiento de un archivo.

2. Solución

Hemos encontrado la solución a este petición: La clase FileVersionInfo provee el método static GetVersionInfo para obtener información de versionamiento de un archivo: publicador del archivo, número de revisión, comentarios, nombre de la compañía, descripción, entre muchos más.

3. Discusión de la Solución

La clase FileInformationInfo [2] (namespace System.Diagnostics) cuenta con el método:

public static FileVersionInfo GetVersionInfo(string fileName)

Descripción declarativa de este método [3]:
  • Método static.
  • Retorno: FileVersionInfo.
  • Parámetros:
    • filename:string:  Nombre del archivo a consultar la información de versionamiento.
Ejemplo de uso:


En la mayoría de los casos recurrimos al compilador de C# vía la línea de comandos. ¿Qué tan interesante podría ser que obtuviéramos la versión de versionamiento del archivo csc.exe?


Procedamos a hacerlo:

Archivo InfoVersionamientoCsc.exe.cs [Enlace alternativo]:



En la línea 16 obtenemos la información de versionamiento del archivo csc.exe. Con la referencia localizada en cscVerInfo mostramos los siguientes datos:
  • Nombre de archivo, 
  • Nombre de producto, 
  • Versión de producto, y 
  • Nombre de compañía.
Esta información es obtenida en las líneas 21-24.

Compilación:

  1. csc /target:exe InfoVersionamientoCsc.exe.cs

Ejecución assembly:

  1. .\UnicaInstanciaAplicacion.exe

> Prueba de ejecución (local):
Ejecución assembly InfoVersionamientoCsc.exe.exe
Figura 1. Ejecución assembly InfoVersionamientoCsc.exe.exe.

4. Práctica: Código C#

Otro archivo interesante que podemos explorar es explorer.exe que corresponde con el ejecutable del explorador de archivos de Windows. (Este ejemplo es una adaptación del presentado en [1].)

Archivo C# ExaminadorVersionamiento.cs [Enlace alternativo]:



En las líneas 16-20 validamos la entrada del usuario. En la línea 24 obtenemos una instancia de FileVersionInfo con la información de versionamiento del archivo pasado como argumento. Las líneas 27-40 muestran varios de los datos relacionados con el versionamiento del archivo.

Compilación:


  1. csc /target:exe ExaminadorVersionamiento.cs

Ejecución assembly:


  1. .\ExaminadorVersionamiento.exe

> Prueba de ejecución (local):
Ejecución assembly ExaminadorVersionamiento.exe
Figura 2. Ejecución assembly ExaminadorVersionamiento.exe.

5. Conclusiones

Hemos estudiado el método GetVersionInfo para obtener un objeto FileVersionInfo con datos de versionamiento de un archivo: nombre de producto, versión de producto, nombre de compañía, versión de archivo, descripción de archivo, entre otros más. Creamos una aplicación de consola para examinar estas propiedades de versionamiento. Aprovechamos esta aplicación para conocer información del archivo explorer.

En la próxima receta haremos algo super interesentísimo: usaremos el control TreeView para representar visualmente la estructura jerárquica de un directorio.

6. Glosario

  • Archivo
  • csc.exe
  • Explorador de archivos
  • explorer.exe
  • Versionamiento

7. Literatura & Enlaces

[1]: Visual C# 2010 Recipes by Allen Jones and Adam Freeman. Copyright 2010 Allen Jones and Adam Freeman, 978-1-4302-2525-6.
[2]: FileVersionInfo Class (System.Diagnostics) - https://msdn.microsoft.com/en-us/library/System.Diagnostics.FileVersionInfo(v=vs.110).aspx
[3]: FileVersionInfo.GetVersionInfo Method (System.Diagnostics) - https://msdn.microsoft.com/en-us/library/system.diagnostics.fileversioninfo.getversioninfo(v=vs.110).aspx


J

No hay comentarios:

Publicar un comentario

Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.