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

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

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

Примечание.

Visual Basic Express не поддерживает запись событий сборки. Она поддерживается только в полных версиях Visual Studio.

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

Чтобы указать событие сборки

  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
    

    Команда принимает два аргумента. Первым аргументом является путь к манифесту приложения (то есть папка, в которой процесс сборки создает манифест, обычно ProjectName.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" />