Поделиться через


Указание событий сборки (Visual Basic)

События сборки в Visual Basic можно использовать для выполнения скриптов, макросов или других действий в рамках процесса компиляции. События предварительной сборки происходят перед компиляцией; События после сборки происходят после компиляции.

Указание событий предварительной сборки и после сборки

Чтобы просмотреть или изменить события сборки для проекта Visual Basic .NET Core или .NET 5 и более поздних версий, щелкните правой кнопкой мыши по узлу проекта и выберите Свойства (или нажмите клавиши Alt+Enter), а затем перейдите к событиям>компиляции. Введите нужную командную строку. Рабочий каталог — это выходной каталог.

Для проектов .NET Framework выполните следующие действия.

  1. При выборе проекта в обозревателе решений в меню Проект щелкните Свойства.

  2. Перейдите на вкладку Компиляция.

  3. Нажмите кнопку "События сборки", чтобы открыть диалоговое окно "События сборки".

  4. Введите аргументы командной строки для действия перед сборкой или после сборки, а затем нажмите кнопку ОК.

События сборки указываются в диалоговом окне событий сборки, доступных на странице компиляцииконструктора проектов.

Указание событий предварительной сборки и после сборки

Указание события сборки

  1. При выборе проекта в обозревателе решений в меню Проект щелкните Свойства.

  2. Перейдите на вкладку Компиляция.

  3. Нажмите кнопку "События сборки", чтобы открыть диалоговое окно "События сборки".

  4. Введите аргументы командной строки для действия перед сборкой или после сборки, а затем нажмите кнопку ОК.

Заметка

Добавьте инструкцию call перед всеми командами, выполняющими файлы .bat, после сборки. Например, call C:\MyFile.bat или call C:\MyFile.bat call C:\MyFile2.bat.

Заметка

Если событие предварительной сборки или после сборки не завершено успешно, можно завершить сборку, завершив действие события кодом, отличном от нуля (0), что указывает на успешное действие.

Пример. Изменение сведений манифеста с помощью события после сборки

В следующей процедуре показано, как задать минимальную версию операционной системы в манифесте приложения с помощью команды .exe, вызываемой из события после сборки (файл манифеста.exe.manifest в каталоге проекта). Минимальная версия операционной системы — это номер четырех частей, например 4.10.0.0. Для этого команда изменит раздел <dependentOS> манифеста:

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

Создание команды .exe для изменения манифеста приложения

  1. Создайте консольное приложение для команды. В меню Файл щелкните Создать, а затем щелкните Проект.

  2. В диалоговом окне создания проекта в узле Visual Basic выберите Windows, а затем шаблон консольного приложения. Присвойте проекту имя ChangeOSVersionVB.

  3. В Module1.vbдобавьте следующую строку к остальным операторам Imports в верхней части файла.

    Imports System.Xml
    
  4. Добавьте следующий код в 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
    

    Команда принимает два аргумента. Первым аргументом является путь к манифесту приложения (то есть папка, в которой процесс сборки создает манифест, обычно <Имя проекта>.publish). Второй аргумент — новая версия операционной системы.

  5. В меню Построить нажмите Построить решение.

  6. Скопируйте файл .exe в каталог, например C:\TEMP\ChangeOSVersionVB.exe.

    Затем вызовите эту команду в событии после сборки, чтобы изменить манифест приложения.

Вызов события после сборки для изменения манифеста приложения

  1. Создайте приложение Windows для публикации проекта. В меню Файл щелкните Создать, а затем щелкните Проект.

  2. В диалоговом окне Создание проекта в узле Visual Basic выберите Рабочий стол Windows, а затем шаблон Приложение Windows Forms. Присвойте проекту имя VBWinApp.

  3. При выборе проекта в обозревателе решений на меню Проект щелкните Свойства.

  4. В конструкторе проектовперейдите на страницу публикации и задайте расположение публикации для C:\TEMP.

  5. Опубликуйте проект, щелкнув Опубликовать сейчас.

    Файл манифеста будет построен и помещен в C:\TEMP\VBWinApp_1_0_0_0\VBWinApp.exe.manifest. Чтобы просмотреть манифест, щелкните файл правой кнопкой мыши и щелкните Открыть с, а затем щелкните Выбрать программу из списка, затем щелкните Блокнот.

    Выполните поиск в файле для элемента <osVersionInfo>. Например, версия может быть:

    <os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />
    
  6. В конструктора проектовперейдите на вкладку Компиляция и нажмите кнопку "События сборки", чтобы открыть диалоговое окно "События сборки сборки".

  7. В поле командной строки события после сборки введите следующую команду:

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

    При сборке проекта эта команда изменит минимальную версию операционной системы в манифесте приложения на 5.1.2600.0.

    Макрос $(TargetPath) выражает полный путь к создаваемому исполняемому файлу. Поэтому $(TargetPath).manifest будет содержать манифест приложения, созданный в каталоге bin. Публикация скопирует этот манифест в место публикации, заданное ранее.

  8. Опубликуйте проект еще раз. Перейдите на страницу публикации и щелкните опубликовать.

    Снова просмотрите манифест. Чтобы просмотреть манифест, перейдите в каталог публикации, щелкните правой кнопкой мыши по файлу, выберите Открыть с, потом Выбрать программу из спискаи щелкните Блокнот.

    Теперь версия должна отображаться как:

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