Cómo: Especificar eventos de compilación (Visual Basic)How to: Specify build events (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.Build events in Visual Basic can be used to run scripts, macros, or other actions as a part of the compilation process. 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.Pre-build events occur before compilation; post-build events occur after compilation.

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.Build events are specified in the Build Events dialog box, available from the Compile page of the Project Designer.

Note

Visual Basic Express no admite la entrada de eventos de compilación.Visual Basic Express does not support entry of build events. Solo se admite en el producto completo de Visual Studio.This is supported only in the full Visual Studio product.

Cómo especificar eventos anteriores y posteriores a la compilaciónHow to specify pre-build and post-build events

Para especificar un evento de compilaciónTo specify a build event

  1. Seleccione un proyecto en el Explorador de solucionesy, en el menú Proyecto , haga clic en Propiedades.With a project selected in Solution Explorer, on the Project menu, click Properties.

  2. Haga clic en la pestaña Compilar.Click the Compile tab.

  3. Haga clic en el botón Eventos de compilación para abrir el cuadro de diálogo Eventos de compilación.Click the Build Events button to open the Build Events dialog box.

  4. 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.Enter the command-line arguments for your pre-build or post-build action, and then click OK.

    Note

    Agregue una instrucción call antes de todos los comandos posteriores a la compilación que ejecutan archivos .bat.Add a call statement before all post-build commands that run .bat files. Por ejemplo: call C:\MyFile.bat o call C:\MyFile.bat call C:\MyFile2.bat.For example, call C:\MyFile.bat or call C:\MyFile.bat call C:\MyFile2.bat.

    Note

    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.If your pre-build or post-build event does not complete successfully, you can terminate the build by having your event action exit with a code other than zero (0), which indicates a successful action.

Ejemplo: Cómo cambiar la información del manifiesto con un evento posterior a la compilaciónExample: How to change manifest information using a post-build event

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).The following procedure shows how to set the minimum operating system version in the application manifest using an .exe command called from a post-build event (the .exe.manifest file in the project directory). La versión mínima del sistema operativo es un número de cuatro partes como 4.10.0.0.The minimum operating system version is a four-part number such as 4.10.0.0. Para realizar esto, el comando cambiará la sección <dependentOS> del manifiesto:To do this, the command will change the <dependentOS> section of the manifest:

<dependentOS>
   <osVersionInfo>
      <os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />
   </osVersionInfo>
</dependentOS>

Para crear un comando .exe para cambiar el manifiesto de aplicaciónTo create an .exe command to change the application manifest

  1. Cree una aplicación de consola para el comando.Create a console application for the command. En el menú Archivo, haga clic en Nuevo y después haga clic en Proyecto.From the File menu, click New, and then click Project.

  2. En el cuadro de diálogo Nuevo proyecto, en el nodo Visual Basic, seleccione Windows y, después, la plantilla Aplicación de consola.In the New Project dialog box, in the Visual Basic node, select Windows and then the Console Application template. Dé un nombre al proyecto ChangeOSVersionVB.Name the project ChangeOSVersionVB.

  3. En Module1.vb, agregue la línea siguiente a las demás instrucciones Imports de la parte superior del archivo:In Module1.vb, add the following line to the other Imports statements at the top of the file:

    Imports System.Xml
    
  4. Agregue el siguiente código en Sub Main:Add the following code in 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.The command takes two arguments. 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 .publish).The first argument is the path to the application manifest (that is, the folder in which the build process creates the manifest, typically .publish). El segundo es la nueva versión del sistema operativo.The second argument is the new operating system version.

  5. En el menú Compilar , haga clic en Compilar solución.On the Build menu, click Build Solution.

  6. Copie el archivo .exe en un directorio, por ejemplo, C:\TEMP\ChangeOSVersionVB.exe.Copy the .exe file to a directory such as C:\TEMP\ChangeOSVersionVB.exe.

    Después, invoque este comando en un evento posterior a la compilación para cambiar el manifiesto de aplicación.Next, invoke this command in a post-build event to change the application manifest.

Para invocar un evento posterior a la compilación para cambiar el manifiesto de aplicaciónTo invoke a post-build event to change the application manifest

  1. Cree una aplicación Windows para que se publique el proyecto.Create a Windows application for the project to be published. En el menú Archivo, haga clic en Nuevo y después haga clic en Proyecto.From the File menu, click New, and then click Project.

  2. 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.In the New Project dialog box, in the Visual Basic node, select Windows Desktop and then the Windows Forms App template. Dé un nombre al proyecto VBWinApp.Name the project VBWinApp.

  3. Con el proyecto seleccionado en el Explorador de soluciones y, en el menú Proyecto, haga clic en Propiedades.With the project selected in Solution Explorer, on the Project menu, click Properties.

  4. En el Diseñador de proyectos, vaya a la página Publicar y establezca Ubicación de publicación en C:\TEMP.In the Project Designer, go to the Publish page and set Publishing location to C:\TEMP.

  5. Publique el proyecto haciendo clic en Publicar ahora.Publish the project by clicking Publish Now.

    El archivo de manifiesto se compilará y se ubicará en C:\TEMP\VBWinApp_1_0_0_0\VBWinApp.exe.manifest.The manifest file will be built and put in 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.To view the manifest, right-click the file and click Open with, then click Select the program from a list, and then click Notepad.

    Busque el archivo para el elemento <osVersionInfo>.Search in the file for the <osVersionInfo> element. Por ejemplo, la versión puede ser:For example, the version might be:

    <os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />
    
  6. 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.In the Project Designer, go to the Compile tab and click the Build Events button to open the Build Events dialog box.

  7. En el cuadro Línea de comandos del evento posterior a la compilación, escriba el comando siguiente:In the Post-build Event Command Line box, enter the following command:

    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.When you build the project, this command will change the minimum operating system version in the application manifest to 5.1.2600.0.

    La macro $(TargetPath) expresa la ruta de acceso completa del ejecutable que se está creando.The $(TargetPath) macro expresses the full path for the executable being created. Por tanto, $(TargetPath).manifest especificará el manifiesto de aplicación creado en el directorio bin.Therefore, $(TargetPath).manifest will specify the application manifest created in the bin directory. La publicación copiará este manifiesto en la ubicación de publicación que ha establecido anteriormente.Publishing will copy this manifest to the publishing location that you set earlier.

  8. Vuelva a publicar el proyecto.Publish the project again. Vaya a la página Publicar y haga clic en Publicar ahora.Go to the Publish page and click Publish Now.

    Vea el manifiesto de nuevo.View the manifest again. 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.To view the manifest, go to the publish directory, right-click the file and click Open with and then Select the program from a list, and then click Notepad.

    La versión ahora debe leerse:The version should now read:

    <os majorVersion="5" minorVersion="1" buildNumber="2600" servicePackMajor="0" />
    

Vea tambiénSee also