Указание событий сборки (Visual Basic)
События сборки в Visual Basic можно использовать для выполнения скриптов, макросов или других действий в составе процесса компиляции. События перед сборкой происходят до компиляции; события после сборки происходят после компиляции.
События сборки указываются в диалоговом окне События сборки, которое можно открыть со страницы Компиляцияконструктора проектов.
Примечание.
Visual Basic Express не поддерживает запись событий сборки. Она поддерживается только в полных версиях Visual Studio.
Указание событий перед сборкой и после нее
Чтобы указать событие сборки
Выберите проект в обозревателе решений, а затем в меню Проект щелкните Свойства.
Откройте вкладку Компиляция.
Нажмите кнопку События сборки, чтобы открыть диалоговое окно События сборки.
Введите аргументы командной строки для действий перед сборкой и после нее и нажмите кнопку ОК.
Примечание.
Добавьте оператор
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 для изменения манифеста приложения
Создайте консольное приложение для команды. В меню Файл выберите команду Создать, а затем — Проект.
В диалоговом окне Новый проект в узле Visual Basic выберите Приложение Windows, а затем шаблон Консольное приложение. Присвойте проекту имя
ChangeOSVersionVB
.В Module1.vb добавьте следующую строку для других операторов
Imports
в верхней части файла:Imports System.Xml
Добавьте следующий код в
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>).< Вторым аргументом является новая версия операционной системы.
В меню Сборка выберите Построить решение.
Скопируйте файл EXE в каталог, например C:\TEMP\ChangeOSVersionVB.exe.
Затем вызовите эту команду в событие после сборки для изменения манифеста приложения.
Чтобы вызвать событие после сборки для изменения манифеста приложения
Создайте приложение Windows для проекта, который должен быть опубликован. В меню Файл выберите команду Создать, а затем — Проект.
В диалоговом окне Новый проект в узле Visual Basic выберите Рабочий стол Windows, а затем шаблон Приложение Windows Forms. Присвойте проекту имя
VBWinApp
.Выберите проект в обозревателе решений, а затем в меню Проект щелкните пункт Свойства.
В конструкторе проектов перейдите на страницу Публикация и для параметра Расположение публикации задайте значение C:\TEMP.
Опубликуйте проект, щелкнув Опубликовать сейчас.
Будет выполнена сборка файла манифеста, и он будет помещен в каталог C:\TEMP\VBWinApp_1_0_0_0\VBWinApp.exe.manifest. Чтобы просмотреть манифест, щелкните правой кнопкой мыши файл и выберите пункт Открыть с помощью, затем выберите Выбрать программу из списка и щелкните Блокнот.
Найдите в файле элемент
<osVersionInfo>
. Например, версия может быть следующей:<os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />
В конструкторе проектов перейдите на вкладку Компиляция и нажмите кнопку События сборки, чтобы открыть диалоговое окно События сборки.
В командной строке события после сборки введите следующую команду:
C:\TEMP\ChangeOSVersionVB.exe "$(TargetPath).manifest" 5.1.2600.0
При сборке проекта выполнение этой команды приведет к изменению минимальной версии операционной системы в манифесте приложения на 5.1.2600.0.
Макрос
$(TargetPath)
выражает полный путь к создаваемому исполняемому файлу. Поэтому $(TargetPath).manifest будет указывать манифест приложения, созданный в каталоге bin. При публикации этот манифест будет скопирован в расположение публикаций, которое было задано ранее.Опубликуйте проект еще раз. Откройте страницу Публикация и нажмите кнопку Опубликовать сейчас.
Еще раз просмотрите манифест. Чтобы просмотреть манифест, перейдите в каталог публикации, щелкните правой кнопкой мыши файл и выберите пункт Открыть с помощью, затем выберите Выбрать программу из списка и щелкните Блокнот.
Версия должна иметь следующий вид:
<os majorVersion="5" minorVersion="1" buildNumber="2600" servicePackMajor="0" />
Связанный контент
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по