Określanie zdarzeń kompilacji (Visual Basic)

Zdarzenia kompilacji w Visual Basic mogą służyć do uruchamiania skryptów, makr lub innych akcji w ramach procesu kompilacji. Zdarzenia przed kompilacją są wykonywane przed kompilacją; Zdarzenia po kompilacji występują po kompilacji.

Zdarzenia kompilacji są określone w oknie dialogowym Zdarzenia kompilacji dostępne na stronie Kompilowanie Projektant projektu.

Uwaga

Program Visual Basic Express nie obsługuje wprowadzania zdarzeń kompilacji. Jest to obsługiwane tylko w pełnym produkcie Visual Studio.

Jak określić zdarzenia przed kompilacją i po kompilacji

Aby określić zdarzenie kompilacji

  1. Po wybraniu projektu w Eksplorator rozwiązań w menu Projekt kliknij pozycję Właściwości.

  2. Kliknij kartę Kompiluj.

  3. Kliknij przycisk Zdarzenia kompilacji, aby otworzyć okno dialogowe Zdarzenia kompilacji.

  4. Wprowadź argumenty wiersza polecenia dla akcji przed kompilacją lub po kompilacji, a następnie kliknij przycisk OK.

    Uwaga

    Dodaj instrukcję call przed wszystkimi poleceniami po kompilacji, które uruchamiają pliki bat . Na przykład: call C:\MyFile.bat lub call C:\MyFile.bat call C:\MyFile2.bat.

    Uwaga

    Jeśli zdarzenie przed kompilacją lub po kompilacji nie zakończy się pomyślnie, możesz zakończyć kompilację, kończąc akcję zdarzenia z kodem innym niż zero (0), co oznacza pomyślną akcję.

Przykład: Jak zmienić informacje o manifeście przy użyciu zdarzenia po kompilacji

Poniższa procedura pokazuje, jak ustawić minimalną wersję systemu operacyjnego w manifeście aplikacji przy użyciu polecenia exe wywoływanego ze zdarzenia po kompilacji ( pliku .exe.manifest w katalogu projektu). Minimalna wersja systemu operacyjnego to czteroczęściowy numer, taki jak 4.10.0.0. W tym celu polecenie spowoduje zmianę <dependentOS> sekcji manifestu:

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

Aby utworzyć polecenie .exe w celu zmiany manifestu aplikacji

  1. Utwórz aplikację konsolową dla polecenia . W menu Plik kliknij pozycję Nowy, a następnie kliknij pozycję Projekt.

  2. W oknie dialogowym Nowy projekt w węźle Visual Basic wybierz pozycję Windows, a następnie szablon Aplikacja konsolowa. Nadaj projektowi ChangeOSVersionVBnazwę .

  3. W pliku Module1.vb dodaj następujący wiersz do innych Imports instrukcji w górnej części pliku:

    Imports System.Xml
    
  4. Dodaj następujący kod w 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
    

    Polecenie przyjmuje dwa argumenty. Pierwszym argumentem jest ścieżka do manifestu aplikacji (czyli folder, w którym proces kompilacji tworzy manifest, zazwyczaj ProjectName.publish>).< Drugim argumentem jest nowa wersja systemu operacyjnego.

  5. W menu Kompilacja kliknij pozycję Kompiluj rozwiązanie.

  6. Skopiuj plik exe do katalogu, takiego jak C:\TEMP\ChangeOSVersionVB.exe.

    Następnie wywołaj to polecenie w zdarzeniu po kompilacji, aby zmienić manifest aplikacji.

Aby wywołać zdarzenie po kompilacji w celu zmiany manifestu aplikacji

  1. Utwórz aplikację systemu Windows dla projektu do opublikowania. W menu Plik kliknij pozycję Nowy, a następnie kliknij pozycję Projekt.

  2. W oknie dialogowym Nowy projekt w węźle Visual Basic wybierz pozycję Pulpit systemu Windows, a następnie szablon Aplikacji formularzy systemu Windows. Nadaj projektowi VBWinAppnazwę .

  3. Po wybraniu projektu w Eksplorator rozwiązań w menu Projekt kliknij pozycję Właściwości.

  4. W Projektant Project przejdź do strony Publikowanie i ustaw pozycję Lokalizacja publikowania na C:\TEMP.

  5. Opublikuj projekt, klikając pozycję Publikuj teraz.

    Plik manifestu zostanie skompilowany i umieszczony w pliku C:\TEMP\VBWinApp_1_0_0_0\VBWinApp.exe.manifest. Aby wyświetlić manifest, kliknij prawym przyciskiem myszy plik i kliknij polecenie Otwórz za pomocą, a następnie kliknij pozycję Wybierz program z listy, a następnie kliknij przycisk Notatnik.

    Wyszukaj w pliku element <osVersionInfo> . Na przykład wersja może być:

    <os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />
    
  6. W Projektant projektu przejdź do karty Kompiluj i kliknij przycisk Zdarzenia kompilacji, aby otworzyć okno dialogowe Zdarzenia kompilacji.

  7. W polu Wiersz polecenia zdarzenia po kompilacji wprowadź następujące polecenie:

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

    Podczas kompilowania projektu to polecenie spowoduje zmianę minimalnej wersji systemu operacyjnego w manifeście aplikacji na 5.1.2600.0.

    Makro $(TargetPath) wyraża pełną ścieżkę do tworzonego pliku wykonywalnego. W związku z tym $(TargetPath).manifest określi manifest aplikacji utworzony w katalogu bin. Opublikowanie spowoduje skopiowanie tego manifestu do ustawionej wcześniej lokalizacji publikowania.

  8. Ponownie opublikuj projekt. Przejdź do strony Publikowanie i kliknij pozycję Publikuj teraz.

    Ponownie wyświetl manifest. Aby wyświetlić manifest, przejdź do katalogu publikowania, kliknij prawym przyciskiem myszy plik i kliknij polecenie Otwórz za pomocą, a następnie wybierz program z listy, a następnie kliknij przycisk Notatnik.

    Wersja powinna teraz odczytywać następujące wersję:

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