Практическое руководство. Указание событий построения (Visual Basic)
События построения в Visual Basic можно использовать для выполнения скриптов, макросов или других действий как часть процесса компиляции. События до построения происходят перед компиляцией; события после построения происходят после компиляции.
События построения указываются в окне События построения, доступном из страницы Компиляция в Конструкторе проектов.
Как указать события до построения и после построения
Чтобы указать событие построения
Выбрав проект в Обозревателе решения, в меню Проект выберите команду Свойства.
Перейдите на вкладку Compile.
Нажмите кнопку События построения для открытия диалогового окна События построения.
Введите аргументы командной строки для действий перед построением и после него и нажмите кнопку ОК.
Примечание
Добавьте оператор 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. Назовите проект 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" />
См. также
Задачи
Практическое руководство. Назначение событий построения (C#)
Ссылки
Страница "Компиляция" в конструкторе проектов (Visual Basic)
Страница публикации в конструкторе проектов