Especificación de eventos de compilación (Visual Basic)
Los eventos de compilación en Visual Basic se pueden usar para ejecutar scripts, macros u otras acciones como parte del proceso de compilación. Los eventos anteriores a la compilación se producen antes de la compilación; los eventos posteriores a la compilación se producen después de la compilación.
Los eventos de compilación se especifican en el cuadro de diálogo Eventos de compilación, disponible en la página Compilar del Diseñador de proyectos.
Nota
Visual Basic Express no admite la entrada de eventos de compilación. Solo se admite en el producto completo de Visual Studio.
Cómo especificar eventos anteriores y posteriores a la compilación
Para especificar un evento de compilación
Seleccione un proyecto en el Explorador de solucionesy, en el menú Proyecto , haga clic en Propiedades.
Haga clic en la pestaña Compilar.
Haga clic en el botón Eventos de compilación para abrir el cuadro de diálogo Eventos de compilación.
Escriba los argumentos de línea de comandos para la acción anterior o posterior a la compilación y después haga clic en Aceptar.
Nota
Agregue una instrucción
call
antes de todos los comandos posteriores a la compilación que ejecutan archivos .bat. Por ejemplo,call C:\MyFile.bat
ocall C:\MyFile.bat call C:\MyFile2.bat
.Nota
Si su evento anterior o posterior a la compilación no se completa correctamente, puede finalizar la compilación haciendo que la acción del evento salga con un código distinto de cero (0), que indica que la acción se ha realizado correctamente.
Ejemplo: Cómo cambiar la información del manifiesto con un evento posterior a la compilación
En el procedimiento siguiente se muestra cómo establecer la versión de sistema operativo mínima en el manifiesto de aplicación con un comando .exe llamado desde un evento posterior a la compilación (el archivo .exe.manifest en el directorio del proyecto). La versión mínima del sistema operativo es un número de cuatro partes como 4.10.0.0. Para realizar esto, el comando cambiará la sección <dependentOS>
del manifiesto:
<dependentOS>
<osVersionInfo>
<os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />
</osVersionInfo>
</dependentOS>
Para crear un comando .exe para cambiar el manifiesto de aplicación
Cree una aplicación de consola para el comando. En el menú Archivo, haga clic en Nuevo y después haga clic en Proyecto.
En el cuadro de diálogo Nuevo proyecto, en el nodo Visual Basic, seleccione Windows y, después, la plantilla Aplicación de consola. Dé un nombre al proyecto
ChangeOSVersionVB
.En Module1.vb, agregue la línea siguiente a las demás instrucciones
Imports
de la parte superior del archivo:Imports System.Xml
Agregue el siguiente código en
Sub Main
:Sub Main() Dim applicationManifestPath As String applicationManifestPath = My.Application.CommandLineArgs(0) Console.WriteLine("Application Manifest Path: " & applicationManifestPath.ToString) 'Get version name Dim osVersion As Version If My.Application.CommandLineArgs.Count >= 2 Then osVersion = New Version(My.Application.CommandLineArgs(1).ToString) Else Throw New ArgumentException("OS Version not specified.") End If Console.WriteLine("Desired OS Version: " & osVersion.ToString()) Dim document As XmlDocument Dim namespaceManager As XmlNamespaceManager namespaceManager = New XmlNamespaceManager(New NameTable()) With namespaceManager .AddNamespace("asmv1", "urn:schemas-microsoft-com:asm.v1") .AddNamespace("asmv2", "urn:schemas-microsoft-com:asm.v2") End With document = New XmlDocument() document.Load(applicationManifestPath) Dim baseXPath As String baseXPath = "/asmv1:assembly/asmv2:dependency/asmv2:dependentOS/asmv2:osVersionInfo/asmv2:os" 'Change minimum required OS Version. Dim node As XmlNode node = document.SelectSingleNode(baseXPath, namespaceManager) node.Attributes("majorVersion").Value = osVersion.Major.ToString() node.Attributes("minorVersion").Value = osVersion.Minor.ToString() node.Attributes("buildNumber").Value = osVersion.Build.ToString() node.Attributes("servicePackMajor").Value = osVersion.Revision.ToString() document.Save(applicationManifestPath) End Sub
El comando toma dos argumentos. El primero es la ruta al manifiesto de aplicación (es decir, la carpeta en la que el proceso de compilación crea el manifiesto, normalmente <NombreDeProyecto>.publish). El segundo es la nueva versión del sistema operativo.
En el menú Compilar , haga clic en Compilar solución.
Copie el archivo .exe en un directorio, por ejemplo, C:\TEMP\ChangeOSVersionVB.exe.
Después, invoque este comando en un evento posterior a la compilación para cambiar el manifiesto de aplicación.
Para invocar un evento posterior a la compilación para cambiar el manifiesto de aplicación
Cree una aplicación Windows para que se publique el proyecto. En el menú Archivo, haga clic en Nuevo y después haga clic en Proyecto.
En el cuadro de diálogo Nuevo proyecto, en el nodo Visual Basic, seleccione Escritorio de Windows y, después, la plantilla Aplicación de Windows Forms. Dé un nombre al proyecto
VBWinApp
.Con el proyecto seleccionado en el Explorador de soluciones y, en el menú Proyecto, haga clic en Propiedades.
En el Diseñador de proyectos, vaya a la página Publicar y establezca Ubicación de publicación en C:\TEMP.
Publique el proyecto haciendo clic en Publicar ahora.
El archivo de manifiesto se compilará y se ubicará en C:\TEMP\VBWinApp_1_0_0_0\VBWinApp.exe.manifest. Para ver el manifiesto, haga clic con el botón derecho en el archivo, haga clic en Abrir con, seleccione Select the program from a list (Seleccionar el programa de la lista) y, después, haga clic en Bloc de notas.
Busque el archivo para el elemento
<osVersionInfo>
. Por ejemplo, la versión puede ser:<os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />
En el Diseñador de proyectos, vaya a la pestaña Compilar y haga clic en el botón Eventos de compilación para abrir el cuadro de diálogo Eventos de compilación.
En el cuadro Línea de comandos del evento posterior a la compilación, escriba el comando siguiente:
C:\TEMP\ChangeOSVersionVB.exe "$(TargetPath).manifest" 5.1.2600.0
Cuando compile el proyecto, este comando cambiará la versión mínima del sistema operativo en el manifiesto de aplicación a 5.1.2600.0.
La macro
$(TargetPath)
expresa la ruta de acceso completa del ejecutable que se está creando. Por tanto, $(TargetPath).manifest especificará el manifiesto de aplicación creado en el directorio bin. La publicación copiará este manifiesto en la ubicación de publicación que ha establecido anteriormente.Vuelva a publicar el proyecto. Vaya a la página Publicar y haga clic en Publicar ahora.
Vea el manifiesto de nuevo. Para ver el manifiesto, vaya al directorio de publicación, haga clic con el botón derecho en el archivo, haga clic en Abrir con, seleccione Select the program from a list (Seleccionar el programa de la lista) y, después, haga clic en Bloc de notas.
La versión ahora debe leerse:
<os majorVersion="5" minorVersion="1" buildNumber="2600" servicePackMajor="0" />