Condividi tramite


Specificare gli eventi di compilazione (Visual Basic)

Gli eventi di compilazione in Visual Basic possono essere usati per eseguire script, macro o altre azioni come parte del processo di compilazione. Gli eventi di pre-compilazione si verificano prima della compilazione; gli eventi post-compilazione si verificano dopo la compilazione.

Come specificare eventi di pre-compilazione e post-compilazione

Per visualizzare o modificare gli eventi di compilazione per un progetto Visual Basic .NET Core o .NET 5 e versioni successive, fare clic con il pulsante destro del mouse sul nodo del progetto e scegliere Proprietà (oppure premere ALT+Invio), quindi passare a Compila eventi>. Immettere la riga di comando desiderata. La directory di lavoro è quella di output.

Per i progetti .NET Framework, seguire questa procedura:

  1. Con un progetto selezionato in Esplora soluzioni, nel menu Progetto, fare clic su Proprietà.

  2. Fare clic sulla scheda Compilazione.

  3. Fare clic sul pulsante eventi di compilazione per aprire la finestra di dialogo eventi di compilazione.

  4. Inserire gli argomenti della riga di comando per l'azione di pre-compilazione o post-compilazione e quindi cliccare su OK.

Gli eventi di compilazione vengono specificati nella finestra di dialogo eventi di compilazione, disponibili nella pagina compilazione della Progettazione progetti .

Come specificare eventi di pre-compilazione e post-compilazione

Per specificare un evento di compilazione

  1. Con un progetto selezionato in Esplora soluzioni, nel menu Progetto, fare clic su Proprietà.

  2. Fare clic sulla scheda Compilazione.

  3. Fare clic sul pulsante eventi di compilazione per aprire la finestra di dialogo eventi di compilazione.

  4. Inserire gli argomenti della riga di comando per l'azione di pre-compilazione o post-compilazione e quindi cliccare su OK.

Nota

Aggiungere un'istruzione call prima di tutti i comandi post-compilazione che eseguono i file .bat. Ad esempio, call C:\MyFile.bat o call C:\MyFile.bat call C:\MyFile2.bat.

Nota

Se l'evento di pre-compilazione o post-compilazione non viene completato correttamente, è possibile terminare la compilazione facendo uscire l'azione evento con un codice diverso da zero (0), che indica un'azione riuscita.

Esempio: Come modificare le informazioni sul manifesto usando un evento di post-compilazione

La procedura seguente illustra come impostare la versione minima del sistema operativo nel manifesto dell'applicazione usando un comando .exe chiamato da un evento di post-compilazione (il file .exemanifesto nella directory del progetto). La versione minima del sistema operativo è un numero in quattro parti, ad esempio 4.10.0.0. A tale scopo, il comando modificherà la sezione <dependentOS> del manifesto:

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

Per creare un comando .exe per modificare il manifesto dell'applicazione

  1. Creare un'applicazione console per il comando . Dal menu File, clicca su Nuovoe quindi su Progetto.

  2. Nella finestra di dialogo Nuovo progetto, nel nodo Visual Basic selezionare Windows e quindi il modello Applicazione console. Assegnare al progetto il nome ChangeOSVersionVB.

  3. In Module1.vb, aggiungi la seguente riga alle altre istruzioni Imports all'inizio del file:

    Imports System.Xml
    
  4. Aggiungere il codice seguente 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
    

    Il comando accetta due argomenti. Il primo argomento è il percorso del manifesto dell'applicazione, ovvero la cartella in cui il processo di compilazione crea il manifesto, in genere <ProjectName>.publish). Il secondo argomento è la nuova versione del sistema operativo.

  5. Nel menu Compila clicca su Compila Soluzione.

  6. Copiare il file .exe in una directory, ad esempio C:\TEMP\ChangeOSVersionVB.exe.

    Richiamare quindi questo comando in un evento di post-compilazione per modificare il manifesto dell'applicazione.

Per richiamare un evento post-compilazione per modificare il manifesto dell'applicazione

  1. Creare un'applicazione Windows per il progetto da pubblicare. Dal menu File, clicca su Nuovoe quindi su Progetto.

  2. Nella finestra di dialogo Nuovo progetto, nel nodo Visual Basic, selezionare Desktop di Windows e quindi il modello applicazione Windows Forms. Assegnare al progetto il nome VBWinApp.

  3. Con il progetto selezionato in Esplora soluzioni, dal menu progetto, scegliere proprietà.

  4. Nella Designer di Progetti, passare alla pagina Pubblica e impostare il percorso di pubblicazione su C:\TEMP.

  5. Pubblicare il progetto facendo clic su Pubblica ora.

    Il file manifesto verrà compilato e inserito in C:\TEMP\VBWinApp_1_0_0_0\VBWinApp.exe.manifest. Per visualizzare il manifesto, fare clic con il pulsante destro del mouse sul file e scegliere Apri con, quindi fare clic su Selezionare il programma da un elenco, quindi scegliere Blocco note.

    Cercare nel file l'elemento <osVersionInfo>. Ad esempio, la versione potrebbe essere:

    <os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />
    
  6. Nella Progettazione progetti, passare alla scheda Compilazione e fare clic sul pulsante Eventi di Compilazione per aprire la finestra di dialogo Eventi di Compilazione.

  7. Nella casella riga di comando eventi post-compilazione immettere il comando seguente:

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

    Quando si compila il progetto, questo comando modificherà la versione minima del sistema operativo nel manifesto dell'applicazione a 5.1.2600.0.

    La macro $(TargetPath) esprime il percorso completo del file eseguibile da creare. Pertanto, $(TargetPath).manifest specifica il manifesto dell'applicazione creato nella directory bin. La pubblicazione copierà questo manifesto nel percorso di pubblicazione impostato in precedenza.

  8. Pubblicare di nuovo il progetto. Vai alla pagina Pubblica e fai clic su Pubblica ora.

    Visualizzare di nuovo il manifesto. Per visualizzare il manifesto, accedere alla directory di pubblicazione, fare clic con il tasto destro del mouse sul file e selezionare Apri con, quindi Seleziona il programma da un elenco, e infine fare clic su Blocco note.

    La versione dovrebbe ora leggere:

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