.NET: Modificar nombre de métodos existentes

No se me ocurrió un nombre que describiera mejor lo que explico en este post. Aquí hablo de cómo cambiar el nombre de un método de manera segura, sin afectar lo que ya está desarrollado en la aplicación, y aprovechando algunas características del .NET Framework.

Sigue leyendo «.NET: Modificar nombre de métodos existentes»

.NET – Actualizar una aplicación

Crear un instalador para nuestras aplicaciones en .NET no tiene mucha ciencia. El problema es cuando modificamos esa aplicación y recompilamos el instalador. Al ejecutarlo de nuevo en la computadora donde ya teníamos instalado nuestro programa, nos aparecerá este mensaje:

Ya está instalada otra versión de este producto. La instalación de esta versión no puede continuar. Para configurar o quitar la versión existente de este producto, utilice Agregar o quitar programas del Panel de control.

Toda aplicación tiene un código único, que sirve al sistema como referencia al programa instalado. En .NET, un proyecto de instalación tiene una propiedad (vista en el panel de Propiedades) llamada ProductCode. Basta con cambiar este código para que el nuevo instalador funcione correctamente.

Sin embargo, la manera más "correcta" de hacerlo es actualizando la versión de la instalación.

Toda aplicación tiene (o debería tener) su número de versión (1.0.0, 1.0.0.5, 2.1, etc.). El control de la versión de un programa depende de su desarrollador, pero lo recomendable es seguir estándares. En .NET la versión de la aplicación se define en la ventana de propiedades del proyecto o en el archivo AssemblyInfo

Cambiar la versión de la aplicación no afecta al instalador, ni a su ProductCode. Lo que sí podemos hacer al respecto es cambiar la versión al proyecto del instalador.

Así es. Los instaladores tienen su propio número de versión, independiente del programa que instalan. Éste lo podemos ver en el panel de propiedades del proyecto de instalación (seleccionando el proyecto en el Explorador de soluciones y presionando F4). Ahí veremos la propiedad Version, que por defecto tiene el valor 1.0.0.

Al cambiar esta propiedad, se nos permitirá cambiar el ProductCode automáticamente, para que nuestra instalación se aceptada como una nueva en el sistema cliente.

No es obligatorio cambiar la versión de una aplicación, y menos la del instalador. Pero es una buena práctica, como un control histórico de nuestra aplicación.

Visual Studio: Evitar advertencias por clases CSS inexistentes

Visual Studio tiene su sistema de validación para web, que es relativamente bueno. Sin tomar en cuenta el hecho de que no reconoce estándares web que Internet Exploiter no conozca (es decir, la mayoría), nos ayuda a encontrar más fácilmente las clases de estilos que nosotros mismos definimos.

Ahora bien, si estamos trabajando sobre un WebUserControl, o si agregamos una hoja de estilos dinámicamente (desde C#/VB, en el código de servidor de la página), o simplemente si a un elemento le agregamos una clase porque la vamos a usar en javascript, en el servidor o donde sea, pero mientras Visual Studio no encuentre esa clase definida en una hoja de estilos, la subrayará y quedará en la lista de errores como una advertencia (warning) por clase no definida.

Las advertencias no detienen el funcionamiento del sitio o aplicación web que estamos creando, pero sí puede resultar molesto ver cómo nuestro registro de errores del proyecto se llena de advertencias que no deberían afectarnos.

Es obligatorio crear la definición de estos estilos en la página. Bastaría con solo declararlos, sin definir ningún estilo en particular, pero sigue siendo un problema que Visual Studio nos obligue a definir algo que no pensamos hacer (y que ocupará unos cuantos bits más en nuestra página. Afortunadamente, existe un truco para "evitar" estas advertencias, definiendo la clase para Visual Studio, pero ocultándola al navegador cuando se cree la página.

Sigue leyendo «Visual Studio: Evitar advertencias por clases CSS inexistentes»

Personalizando controles de .NET

En un proyecto reciente me topé con algunos detalles que me parecieron incómodos de .NET.

El primero fue con los TextBoxes. Quería que al posicionar el cursor sobre ellos, se seleccionara automáticamente todo el texto. Nunca encontré una propiedad que lo hiciera, y de todos modos, sería molesto estar modificando esa propiedad en cada uno.

Esto también me afectaba en el MaskedTextBox. Si por ejemplo, tienes una máscara de cuatro dígitos, puedes poner el cursor en cualquiera de las cuatro posiciones y escribir a partir de ahí. Entonces, quise que desde el principio esté todo el cuadro seleccionado y, además, que al quitar el cursor se ajuste el texto de nuevo todo a la izquierda.

¿Qué es lo más fácil en estos casos? Hacer un control que herede de estos.

Sigue leyendo «Personalizando controles de .NET»