Partilhar via


Especificar eventos de compilação (Visual Basic)

Os eventos de compilação no Visual Basic podem ser usados para executar scripts, macros ou outras ações como parte do processo de compilação. Os eventos de pré-compilação ocorrem antes da compilação; Os eventos pós-compilação ocorrem após a compilação.

Como especificar eventos pré e pós-compilação

Para exibir ou alterar eventos de compilação para um projeto Visual Basic .NET Core ou .NET 5 e posterior, clique com o botão direito do mouse no nó do projeto e escolha Properties (ou pressione Alt+Enter), em seguida, vá para Compile>Events. Digite a linha de comando desejada. O diretório de trabalho é o diretório de saída.

Para projetos do .NET Framework, siga estas etapas:

  1. Com um projeto selecionado no Gerenciador de Soluções, no menu Projeto, clique em Propriedades.

  2. Clique na guia Compilar.

  3. Clique no botão Build Events para abrir a caixa de diálogo Build Events.

  4. Insira os argumentos de linha de comando para sua ação de pré-compilação ou pós-compilação e clique em OK.

Os eventos de compilação são especificados na caixa de diálogo Build Events, disponível na página Compile do Project Designer.

Como especificar eventos pré e pós-compilação

Para especificar um evento de compilação

  1. Com um projeto selecionado no Gerenciador de Soluções, no menu Projeto, clique em Propriedades.

  2. Clique na guia Compilar.

  3. Clique no botão Build Events para abrir a caixa de diálogo Build Events.

  4. Insira os argumentos de linha de comando para sua ação de pré-compilação ou pós-compilação e clique em OK.

Observação

Adicione uma call instrução antes de todos os comandos pós-compilação que executam .bat arquivos. Por exemplo, call C:\MyFile.bat ou call C:\MyFile.bat call C:\MyFile2.bat.

Observação

Se o evento pré ou pós-compilação não for concluído com êxito, você poderá encerrar a compilação fazendo com que a ação do evento saia com um código diferente de zero (0), o que indica uma ação bem-sucedida.

Você pode fazer referência a "macros" (na verdade, nomes de propriedade MSBuild) nos scripts. Para fazer referência a uma propriedade, use a sintaxe $(PropertyName), que é substituída pelo valor da propriedade quando o script de evento é executado. Para obter uma lista de valores comumente usados, consulte Propriedades comuns do MSBuild. Pode haver outras propriedades, assim como aquelas definidas no ficheiro de projeto, em quaisquer ficheiros importados no ficheiro de projeto, em variáveis de ambiente ou passadas pela linha de comando usando a opção MSBuild durante as compilações de linha de comando -p.

Exemplo: Como alterar as informações do manifesto usando um evento pós-compilação

O procedimento a seguir mostra como definir a versão mínima do sistema operacional no manifesto do aplicativo usando um .exe comando chamado de um evento pós-compilação (o .exe.manifest arquivo no diretório do projeto). A versão mínima do sistema operacional é um número de quatro partes, como 4.10.0.0. Para fazer isso, o comando alterará a seção <dependentOS> do manifesto:

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

Para criar um comando .exe para alterar o manifesto do aplicativo

  1. Crie um aplicativo de console para o comando. No menu Arquivo, clique em Novoe, em seguida, clique em Projeto.

  2. Na caixa de diálogo New Project, no nó Visual Basic, selecione Windows e, em seguida, o modelo Aplicação de Consola. Nomeie o projeto ChangeOSVersionVB.

  3. No Module1.vb, adicione a seguinte linha às outras instruções Imports na parte superior do arquivo:

    Imports System.Xml
    
  4. Adicione o seguinte código em 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
    

    O comando usa dois argumentos. O primeiro argumento é o caminho para o manifesto do aplicativo (ou seja, a pasta na qual o processo de compilação cria o manifesto, normalmente <ProjectName>.publish). O segundo argumento é a nova versão do sistema operacional.

  5. No menu Build, clique em Build Solution.

  6. Copie o arquivo .exe para um diretório como C:\TEMP\ChangeOSVersionVB.exe.

    Em seguida, invoque esse comando em um evento pós-compilação para alterar o manifesto do aplicativo.

Para invocar um evento pós-compilação para alterar o manifesto do aplicativo

  1. Crie um aplicativo do Windows para o projeto a ser publicado. No menu Arquivo, clique em Novoe, em seguida, clique em Projeto.

  2. Na caixa de diálogo Novo Projeto, no nó Visual Basic, selecione Windows Desktop e, em seguida, o modelo Windows Forms App. Nomeie o projeto VBWinApp.

  3. Com o projeto selecionado no Gestor de Soluções, no menu Projeto, clique em Propriedades.

  4. No Project Designer, vá para a página Publicar e defina Local de Publicação como C:\TEMP.

  5. Publique o projeto clicando em Publicar agora.

    O arquivo de manifesto será criado e colocado em C:\TEMP\VBWinApp_1_0_0_0\VBWinApp.exe.manifest. Para visualizar o manifesto, clique com o botão direito do rato no ficheiro e clique em Abrir come, em seguida, clique em Selecione o programa de uma listae, em seguida, clique em Bloco de Notas.

    Procure o elemento <osVersionInfo> no arquivo. Por exemplo, a versão pode ser:

    <os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />
    
  6. No Project Designer , vá para a guia Compile e clique no botão Build Events para abrir a caixa de diálogo Build Events.

  7. Na caixa de linha de comando de evento pós-compilação, digite o seguinte comando:

    C:\TEMP\ChangeOSVersionVB.exe "$(TargetPath).manifest" 5.1.2600.0

    Quando você cria o projeto, esse comando altera a versão mínima do sistema operacional no manifesto do aplicativo para 5.1.2600.0.

    A macro $(TargetPath) expressa o caminho completo para o executável que está sendo criado. Portanto, $(TargetPath).manifest especifica o manifesto do aplicativo criado no diretório bin . A publicação copia esse manifesto para o local de publicação definido anteriormente.

  8. Publique o projeto novamente. Vá para a página Publicar e clique em Publicar agora.

    Exiba o manifesto novamente. Para exibir o manifesto, vá para o diretório de publicação, clique com o botão direito do mouse no arquivo e clique em Abrir com e, em seguida, Selecione o programa de uma listae, em seguida, clique em Bloco de Notas.

    A versão deve agora ler-se:

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