viernes, octubre 31, 2008

Patrón para IDisposable

El siguiente debería ser el patrón general a utilizar para implementar IDisposable:

1 public class DisposableClass : IDisposable
2 {
3 //Finalizador.
4 //Llamado por el GC al eliminar el objeto de memoria.
5 ~DisposableClass()
6 {
7 //Liberamos los recursos no manejados
8 Dispose(false);
9 }
10
11 //Llamado explicitamente por el desarrollador.
12 //bien usando using o invocandolo explicitamente.
13 public void Dispose()
14 {
15 //Llamamos a Dispose para liberar los recursos mantenidos por la clase
16 Dispose(true);
17 //Puesto que ya hemos realizado la liberación de recursos, no es
18 //necesario que el GC llame al finalizador
19 System.GC.SuppressFinalize(this);
20 }
21
22 //Esta función aglutina todo el proceso de liberación de recursos.
23 //Se invoca desde el finalizador pasando false, pues el finalizador solo
24 //debe liberar recursos no manejados.
25 //Se invoca desde el método Dispose pasando true pues queremos en ese caso
26 //liberar todos los recursos valisos agregados por el objeto, sena estos
27 //manejados o no.
28 protected virtual void Dispose(bool disposing)
29 {
30 if (disposing)
31 {
32 //Liberar aquí los objetos manejados agregados en esta clase
33 //que implementen IDisposable llamando explicitamente a su método Dispose.
34 }
35
36 //Liberar aquí todos los recursos no manejados.
37 }
38 }

Etiquetas: ,

jueves, octubre 02, 2008

Como instalar dos versiones de un producto en la GAC

Cuando se instala una nueva version de un producto en la GAC vía un msi, el instalador chequea si existe una versión previa instalada y en el caso en que exista, no nos deja instalar.

Esto se puede corregir cambiando el atributo "ProductCode" (en las propiedades del proyecto de setup) por cualquier otro (el propio Visual Studio nos genera un nuevo código) y así, permitir al instalador poner las dos versiones en la GAC

Etiquetas: ,

miércoles, octubre 01, 2008

Incluir XSD en el editor de XML de Visual Studio

Es posible indicarle al Visual Studio los XSD que debe utilizar para validar la estructura de un archivo XML que se está editando.
Para ello, basta con copiar el XSD en cuestion en una carpeta en particular para el VS la maneje.
La carpeta en cuestión es:

En VS2003 :
<InstallDir>\Microsoft Visual Studio .NET 2003\Common7\Packages\schemas\xml

En VS2005 :
<InstallDir>\Microsoft Visual Studio 8\Xml\Schemas

Etiquetas: ,