Udostępnij za pomocą


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.

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

Aby wyświetlić lub zmienić zdarzenia kompilacji dla programu Visual Basic .NET Core lub .NET 5 lub nowszego projektu, kliknij prawym przyciskiem myszy węzeł projektu i wybierz pozycję Właściwości (lub naciśnij Alt+Enter), a następnie przejdź do pozycji Kompiluj zdarzenia>. Wprowadź żądany wiersz polecenia. Katalog roboczy jest katalogem wyjściowym.

W przypadku projektów programu .NET Framework wykonaj następujące kroki:

  1. Po wybraniu projektu w eksploratorze rozwiązań w menu Project 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.

Zdarzenia kompilacji są określone w oknie dialogowym zdarzenia kompilacji, dostępnym na stronie Kompilacja w Projektancie projektów .

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

Aby określić zdarzenie kompilacji

  1. Po wybraniu projektu w eksploratorze rozwiązań w menu Project 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.

Notatka

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

Notatka

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ę.

W skryptach można odwoływać się do "makr" (w rzeczywistości nazw właściwości MSBuild). Aby odwołać się do właściwości, użyj składni $(PropertyName), która jest zastępowana wartością właściwości podczas wykonywania skryptu zdarzenia. Aby uzyskać listę często używanych wartości, zobacz MSBuild common properties (Typowe właściwości programu MSBuild). Mogą istnieć inne właściwości, zdefiniowane w pliku projektu, w zaimportowanych plikach do projektu, w zmiennych środowiskowych lub przekazane w wierszu poleceń za pomocą przełącznika MSBuild podczas kompilacji wiersza poleceń.

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 .exe polecenia wywoływanego ze zdarzenia po kompilacji ( .exe.manifest pliku w katalogu projektu). Minimalna wersja systemu operacyjnego to czteroczęściowy numer, taki jak 4.10.0.0. W tym celu polecenie spowoduje zmianę sekcji <dependentOS> 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ą do polecenia. W menu Plik kliknij pozycję Nowy, a następnie kliknij pozycję Projekt.

  2. W oknie dialogowym New Project w węźle Visual Basic wybierz pozycję Windows, a następnie szablon aplikacji konsoli . Nadaj projektowi nazwę ChangeOSVersionVB.

  3. W Module1.vbdodaj następujący wiersz do innych instrukcji Imports na górze 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 New Project w węźle Visual Basic wybierz pozycję Windows Desktop, a następnie szablon Windows Forms App. Nadaj projektowi nazwę VBWinApp.

  3. Po wybraniu projektu w Eksploratorze rozwiązań , w menu Projekt kliknij Właściwości.

  4. W Project Designer przejdź do strony publikowanie i ustaw lokalizację publikowania, aby C:\TEMP.

  5. Opublikuj projekt, klikając Opublikuj teraz.

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

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

    <os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />
    
  6. W Project Designer przejdź do karty Compile i kliknij przycisk Build Events (Zdarzenia kompilacji), aby otworzyć okno dialogowe Build Events (Zdarzenia kompilacji).

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

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

    Podczas kompilowania projektu to polecenie zmienia minimalną wersję systemu operacyjnego w manifeście aplikacji na 5.1.2600.0.

    Makro $(TargetPath) wyraża pełną ścieżkę do tworzonego pliku wykonywalnego. $(TargetPath).manifest W związku z tym określa manifest aplikacji utworzony w katalogu bin. Publikowanie kopiuje ten manifest do ustawionej wcześniej lokalizacji publikowania.

  8. Ponownie opublikuj projekt. Przejdź do strony Publikowanie i kliknij Opublikuj teraz.

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

    Wersja powinna teraz wyglądać następująco:

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