post icon

Compilación condicional en dotNet

En otros términos a la compilación condicional también se lo conoce como directivas de preprocesador, y ésto que quiere decir? significa que podemos determinar como se comportará el compilador con el código que acabamos de escribir, pudiendo así tomar distintas rutas de compilación. En la información contenida en la red, en su mayoría explican como hacer esto, con las constantes DEBUG y RELEASE, pero no si quisieramos personalizarlo más allá, ahora podremos ver como hacerlo a nuestro modo.

Por ejemplo, supongamos que estamos desarrollando un sistema de facturación que lo hemos vendido a 2 clientes, para exagerar un poco son de distintos países, en gran manera la lógica de negocios es la misma, difiriendo en algunos pequeños detalles. Tenemos la pantalla en donde se hace la venta y debemos calcular el impuesto por el producto vendido, el primer cliente es de Venezuela y su impuesto es del 16% sobre el valor del producto, en cambio el otro cliente es de Paraguay, en donde el impuesto es del 10%.

Normalmente este tipo de calculo se haría dinamicamente, seteandose el porcentaje del impuesto en algún lugar, pero para comprender el concepto lo haremos de un modo estático.

En que nos beneficia esto? De este modo no tendremos que crear distintos proyectos para cada cliente, todo el código estará en el mismo lugar, así no se repetirá código común. También se puede implementar, para reducir las funcionalidades de un producto según la licencia que compraron, etc. Es sólo cuestión de imaginación como usarlo.

Vamos a crear 2 perfiles, uno para cada cliente. Veanlo en la siguiente imagen como se hace.

Perfiles

Con esto ya hemos creado los perfiles necesarios, pero aún falta un detalle mínimo, necesitamos crear los Simbolos de Compilación Condicional, que en palabras cristianas, son los tags por los que preguntaremos para determinar una compilación u otra. A ellas podemos acceder dando clic derecho sobre nuestro proyecto y elegir Propiedades, en la lengueta Generar como ven en la imagen sabrán que hacer. Tienen que tener en cuenta que en un proyecto C#, se verá así, en un proyecto VB, cambia un poco la ubicación de los objetos, pero también es configurable del mismo modo, si están trabajando con VB, van a la lengüeta Compilar y dan clic en el botón: Opciones de compilación avanzadas.. allí les aparecerá una pantalla nueva en donde podrán ir agregando los tags que necesiten.

Tags de precompilacion

Debemos recordar que cada perfil, puede configurarse con distintos comportamientos, parámetros de salida, ejecución de llamadas a programas externos, un montón de cosas realmente que ahora mismo no veremos por que dan para escribir decenas de artículos más.

Ahora haremos uso de ellos, para eso crearemos un formulario, con 2 cajas de texto, 1 label dinamico y 1 botón. En el botón escribiremos código, el cual se comportará de manera distinta no por los datos o parametros que reciba, sino por como definamos que se compilará. La pantalla se verá así de sencilla.

formulario

Fijense que tenemos 1 solo botón, y escribiremos por así decirlo 2 códigos en el mismo evento, se compilará según lo deseemos, la verificación del mismo quedaría algo así:

1
2
3
4
5
#if Paraguay
            if (txtImpuesto != null) txtImpuesto.Text = Convert.ToString(Convert.ToDouble(txtImporte.Text) * 0.1);
#elif Venezuela
            if (txtImpuesto != null) txtImpuesto.Text = Convert.ToString(Convert.ToDouble(txtImporte.Text) * 0.16);
#endif

Comentarios desde Facebook:

  1. avatar
    Loloto CHILE Mozilla Windows
    2 Junio 2014 at 14:48 #

    Gracias, me fue muy útil.

Trackbacks/Pingbacks

  1. Tweets that mention Compilación condicional en C# y Visual Basic .Net - Directivas de Precompilación | DevTroce.com -- Topsy.com UNITED STATES - 18 Julio 2010

    […] This post was mentioned on Twitter by Ronald Riveros, DevTroce. DevTroce said: Compilación condicional en dotNet: En otros términos a la compilación condicional también se… http://goo.gl/fb/U7rBl […]

Responder