方法 : ビルド イベントを指定する (Visual Basic)
Visual Basic のビルド イベントは、コンパイル処理の一部としてスクリプト、マクロ、またはその他の処理を実行するために使用できます。 ビルド前のイベントはコンパイル前に発生します。ビルド後のイベントはコンパイル後に発生します。
ビルド イベントは [ビルド イベント] ダイアログ ボックスで指定します。このダイアログ ボックスは、プロジェクト デザイナーの [コンパイル] ページから使用できます。
ビルド前のイベントおよびビルド後のイベントの指定方法
ビルド イベントを指定するには
ソリューション エクスプローラーでプロジェクトが選択されている状態で、[プロジェクト] メニューの [プロパティ] をクリックします。
[コンパイル] タブをクリックします。
[ビルド イベント] をクリックして [ビルド イベント] ダイアログ ボックスを開きます。
ビルド前の処理またはビルド後の処理用のコマンド ライン引数を入力して、[OK] をクリックします。
注意
.bat ファイルを実行するすべてのビルド後コマンドの前に、call ステートメントを追加します。 たとえば、call C:\MyFile.bat または call C:\MyFile.bat call C:\MyFile2.bat です。
注意
ビルド前のイベントまたはビルド後のイベントが正常に完了しなかった場合は、ゼロ (0 はアクションの成功を示す) 以外のコードでイベント アクションを終了させることによって、ビルドを強制終了できます。
例 : ビルド後のイベントを使用してマニフェスト情報を変更する方法
次の手順は、ビルド後のイベントから呼び出される .exe コマンドを使用して、アプリケーション マニフェスト (プロジェクト ディレクトリ内の .exe.manifest ファイル) 内にオペレーティング システムの最小バージョンを設定する方法を示しています。 オペレーティング システムの最小バージョンは、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 に配置されます。 マニフェストを表示するには、ファイルを右クリックし、[プログラムから開く] をクリックします。次に、[一覧からプログラムを選択する] をクリックし、[Notepad] をクリックします。
ファイルで <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 ディレクトリに作成されたアプリケーション マニフェストを指定することになります。 発行することにより、前に設定した発行場所にこのマニフェストがコピーされます。
プロジェクトを再び発行します。 [発行] ページに移動し、[今すぐ発行] をクリックします。
マニフェストを再び表示します。 マニフェストを表示するには、発行ディレクトリに移動し、ファイルを右クリックして、[プログラムから開く] をクリックします。次に、[一覧からプログラムを選択する] をクリックし、[Notepad] をクリックします。
設定したバージョンが表示されます。
<os majorVersion="5" minorVersion="1" buildNumber="2600" servicePackMajor="0" />
参照
処理手順
参照
[コンパイル] ページ (プロジェクト デザイナー) (Visual Basic)
[ビルド前に実行するコマンド ライン] / [ビルド後に実行するコマンド ライン] ダイアログ ボックス