Entre tantas cosas interesantes que he encontrado, he visto un par de trucos para automatizar la acción de copiar los archivos *.config que se generan en el root del proyecto de Visual Basic .Net al directorio de compilación (usualmente \bin). Usualmente en C# esto se logra utilizando los eventos de Pre y Post compilación. En el evento PostBuildEvent, se agrega la siguiente instrucción: copy "$(ProjectDir)*.config" "$(TargetDir)"
Pero debido a que los proyectos de Visual Basic .Net no poseen la capacidad de editar los eventos de Pre y Post compilación, esto se torna un poco mas complicado. Una solución es, dentro de la solución que contiene al proyecto VB.Net, agregar un nuevo proyecto del tipo VB.Net, editar el archivo con un editor de texto y agregar dentro del mismo las acciones para realizar en los eventos de Pre y Post compilación. Esto es posible ya que el compilador de VB.Net soporta esta característica pero el IDE no. Por ejemplo:
- Editar un archivo de proyecto de C# (.csproj) con un editor de texto.
- Ubicar el elemento que define el evento PostBuildEvent. Esta en CSHARP/Build/Settings, en el atributo PostBuildEvent.
- Copiar esta línea. Por ejemplo, PostBuildEvent = ‘xcopy /C /I /R /Y "$(ProjectDir)exceptionHandlingConfiguration.config" "$(ProjectDir)$(OutDir)." > nul copy "$(ProjectDir)*.manifest" "$(ProjectDir)$(OutDir)." > nul ’
- Editar un archivo de proyecto de VB.Net con un editor de texto.
- Ubicar el elemento que define el evento PostBuildEvent y agregarle la línea que copiamos anteriormente.
Esta es una opción, es la opción que se utiliza por ejemplo en EntLib. Pero existen otras opciones más interesantes. Por ejemplo, instalar un AddIn para el Visual Studio que nos permite definir las acciones de Pre y Post procesamiento, a través de un entorno grafico. (Básicamente modifica luego el archivo del proyecto VB.Net). El mismo se puede encontrar en la página de Ejemplos de Automatización del Visual Studio. Con el nombre de PrePostBuildRulesAddIn.
Y finalmente en www.GotDotNet.com, hay un AddIn mas avanzado, basado en el anterior. Se puede bajar desde la página de su autor http://www.visualbarty.net/#. Si bien no esta completo en cuanto a las macro sustituciones que se deben hacer para poder realizar una copia automática, es una base para hacer de esto un proceso automático (el codigo es bastante simple). El próximo fin de semana tratare de modificarlo para que quede compatible con EntLib y que automáticamente copie los archivos al \Bin $(TargetDir).
Saludos.
Leave a comment