Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
События сборки в Visual Basic можно использовать для выполнения скриптов, макросов или других действий в рамках процесса компиляции. События предварительной сборки происходят перед компиляцией; События после сборки происходят после компиляции.
Указание событий предварительной сборки и после сборки
Чтобы просмотреть или изменить события сборки для проекта Visual Basic .NET Core или .NET 5 и более поздних версий, щелкните правой кнопкой мыши по узлу проекта и выберите Свойства (или нажмите клавиши Alt+Enter), а затем перейдите к событиям>компиляции. Введите нужную командную строку. Рабочий каталог — это выходной каталог.
Для проектов .NET Framework выполните следующие действия.
При выборе проекта в обозревателе решений в меню Проект щелкните Свойства.
Перейдите на вкладку Компиляция.
Нажмите кнопку "События сборки", чтобы открыть диалоговое окно "События сборки".
Введите аргументы командной строки для действия перед сборкой или после сборки, а затем нажмите кнопку ОК.
События сборки указываются в диалоговом окне событий сборки, доступных на странице компиляцииконструктора проектов.
Указание событий предварительной сборки и после сборки
Указание события сборки
При выборе проекта в обозревателе решений в меню Проект щелкните Свойства.
Перейдите на вкладку Компиляция.
Нажмите кнопку "События сборки", чтобы открыть диалоговое окно "События сборки".
Введите аргументы командной строки для действия перед сборкой или после сборки, а затем нажмите кнопку ОК.
Заметка
Добавьте инструкцию call
перед всеми командами после сборки, выполняющими .bat
файлы. Например, call C:\MyFile.bat
или call C:\MyFile.bat call C:\MyFile2.bat
.
Заметка
Если событие предварительной сборки или после сборки не завершено успешно, можно завершить сборку, завершив действие события кодом, отличном от нуля (0), что указывает на успешное действие.
В скриптах можно ссылаться на макросы (фактически имена свойств MSBuild). Чтобы ссылаться на свойство, используйте синтаксис $(PropertyName)
, заменяемый значением свойства при выполнении скрипта события. Список часто используемых значений см. в разделе общих свойств MSBuild. В файле проекта могут быть указаны свойства, а также они могут быть определены в любом импортированном файле, в переменных среды или переданы в командной строке с использованием переключателя MSBuild во время сборки командной строки.
Пример. Изменение сведений манифеста с помощью события после сборки
В следующей процедуре показано, как задать минимальную версию операционной системы в манифесте приложения с помощью .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
Команда принимает два аргумента. Первым аргументом является путь к манифесту приложения (то есть папка, в которой процесс сборки создает манифест, обычно <Имя проекта>.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" />
Связанное содержимое
- страница компиляции конструктор проектов (Visual Basic)
- страница публикации , конструктор проектов
- диалоговое окно командной строки события предварительной сборки или командной строки события после сборки
- Как указать события сборки (C#)