ビルド イベントを指定する (Visual Basic)
Visual Basic のビルド イベントを使用して、コンパイル プロセスの一部としてスクリプト、マクロ、またはその他のアクションを実行できます。 ビルド前のイベントはコンパイル前に発生します。ビルド後のイベントはコンパイル後に発生します。
ビルド前イベントとビルド後イベントを指定する方法
Visual Basic .NET Core または .NET 5 以降のプロジェクトのビルド イベントを表示または変更するには、プロジェクト ノードを右クリックし、[プロパティ] を選択し (または、Alt キー+押してenter キーを押します)、[>イベントのコンパイル]のに移動します。 目的のコマンド ラインを入力します。 作業ディレクトリは出力ディレクトリです。
.NET Framework プロジェクトの場合は、次の手順に従います。
ソリューション エクスプローラーの でプロジェクト選択した状態で、[プロジェクト] メニューの [プロパティ] クリックします。
「[コンパイル] タブをクリックします。」
[ビルド イベント] ボタンをクリックして、[ビルド イベント] ダイアログ ボックスを開きます。
ビルド前またはビルド後のアクションのコマンド ライン引数を入力し、[OK] をクリックします。
ビルド イベントは、プロジェクト デザイナーの [コンパイル] ページから使用できる [ビルド イベント] ダイアログ ボックスで指定します。
ビルド前イベントとビルド後イベントを指定する方法
ビルド イベントを指定するには
ソリューション エクスプローラーの でプロジェクト選択した状態で、[プロジェクト] メニューの [プロパティ] クリックします。
[コンパイル] タブをクリックします。
[ビルド イベント] ボタンをクリックして [ビルド イベント] ダイアログ ボックスを開きます。
ビルド前またはビルド後のアクションのコマンド ライン引数を入力し、[OK] をクリックします。
手記
.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 コマンドを作成するには
コマンドのコンソール アプリケーションを作成します。 [ファイル] メニューの [新しい] をクリックし、[プロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスの [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
このコマンドは 2 つの引数を受け取ります。 最初の引数は、アプリケーション マニフェストへのパスです (つまり、ビルド プロセスがマニフェストを作成するフォルダーです。通常は、ProjectName>.publish <)。 2 番目の引数は、新しいオペレーティング システムのバージョンです。
[ビルド] メニューで [ビルド ソリューション] をクリックします。
.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" />