다음을 통해 공유


빌드 이벤트 지정(Visual Basic)

Visual Basic의 빌드 이벤트를 사용하여 컴파일 프로세스의 일부로 스크립트, 매크로 또는 기타 작업을 실행할 수 있습니다. 빌드 전 이벤트는 컴파일 전에 발생합니다. 빌드 후 이벤트는 컴파일 후에 발생합니다.

빌드 전 및 빌드 후 이벤트를 지정하는 방법

Visual Basic .NET Core 또는 .NET 5 이상 프로젝트에 대한 빌드 이벤트를 보거나 변경하려면 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 속성 선택하거나 Alt+enter누른 다음 컴파일>이벤트이동합니다. 원하는 명령줄을 입력합니다. 작업 디렉터리가 출력 디렉터리입니다.

.NET Framework 프로젝트의 경우 다음 단계를 수행합니다.

  1. 솔루션 탐색기프로젝트를 선택한 상태에서 프로젝트 메뉴에서 속성클릭합니다.

  2. 컴파일 탭을 클릭합니다.

  3. 빌드 이벤트 단추를 클릭하여 빌드 이벤트 대화 상자를 엽니다.

  4. 빌드 전 또는 빌드 후 작업에 대한 명령줄 인수를 입력한 다음 확인클릭합니다.

빌드 이벤트는 프로젝트 디자이너컴파일 페이지에서 사용할 수 있는 빌드 이벤트 대화 상자에 지정됩니다.

빌드 전 및 빌드 후 이벤트를 지정하는 방법

빌드 이벤트를 지정하려면

  1. 솔루션 탐색기프로젝트를 선택한 상태에서 프로젝트 메뉴에서 속성클릭합니다.

  2. 컴파일 탭을 클릭합니다.

  3. 빌드 이벤트 단추를 클릭하여 빌드 이벤트 대화 상자를 엽니다.

  4. 빌드 전 또는 빌드 후 작업에 대한 명령줄 인수를 입력한 다음 확인클릭합니다.

메모

.bat 파일을 실행하는 모든 빌드 후 명령 앞에 call 문을 추가합니다. 예를 들어 call C:\MyFile.bat 또는 call C:\MyFile.bat call C:\MyFile2.bat.

메모

빌드 전 또는 빌드 후 이벤트가 성공적으로 완료되지 않은 경우 성공적인 작업을 나타내는 0이 아닌 코드로 이벤트 작업을 종료하여 빌드를 종료할 수 있습니다.

예: 빌드 후 이벤트를 사용하여 매니페스트 정보를 변경하는 방법

다음 절차에서는 빌드 후 이벤트(프로젝트 디렉터리의 .exe.manifest 파일)에서 호출된 .exe 명령을 사용하여 애플리케이션 매니페스트에서 최소 운영 체제 버전을 설정하는 방법을 보여 줍니다. 최소 운영 체제 버전은 4.10.0.0과 같은 4부로 구성된 숫자입니다. 이를 위해 명령은 매니페스트의 <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).manifestbin 디렉터리에서 생성된 애플리케이션 매니페스트를 지정합니다. 게시는 이 매니페스트를 이전에 설정한 게시 위치에 복사합니다.

  8. 프로젝트를 다시 게시합니다. 발행 페이지로 이동하고 지금 발행을 클릭합니다.

    매니페스트를 다시 봅니다. 매니페스트를 보려면 게시 디렉터리로 이동하여 파일을 마우스 오른쪽 단추로 클릭하고 열기를 클릭한 다음 목록프로그램을 선택한 다음 메모장클릭합니다.

    이제 버전은 다음과 같아야 합니다.

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