次の参考文献を使用して答えを見つけました。
完全なセットアップは非常に複雑であることが判明したため、最小限の手順で最初の 2 つの質問に答えることに限定します。
MSVC でカスタム ビルド ツールを追加するには
プロジェクト ファイル ( vcxproj
) に、新しいビルド定義を含めます (おそらくシステム全体に含める方法がありますが、まだ調べていません)。
<ImportGroup Label="ExtensionTargets">
<Import Project="mybuild.targets" />
</ImportGroup>
これは閉店直前に行くことができます</Project>
。
mybuild.targets
ファイルと同じフォルダーにというテキスト ファイルを作成しvcxproj
ます。
に次を挿入しますmybuild.targets
。
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<PropertyPageSchema
Include="$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml" />
</ItemGroup>
</Project>
このターゲット ファイルは、詳細を含む xml ファイルを参照します ($(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml
この例では mybuild.xml を参照しています)。を作成しますmybuild.xml
。
に次を挿入しますmybuild.xml
。
<?xml version="1.0" encoding="utf-8"?>
<ProjectSchemaDefinitions xmlns="http://schemas.microsoft.com/build/2009/properties"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib">
<ItemType Name="MYBUILD" DisplayName="My Custom Build" />
</ProjectSchemaDefinitions>
今行ったこと: プロジェクト ファイルに新しいターゲット定義が含まれるようになりました ( mybuild.targets
)。このファイルには通常、実際のビルドの実行方法に関する詳細情報が含まれていますが、ここではmybuild.xml
ファイルへのインクルードのみが含まれています。このmybuild.xml
ファイルには、内部名MYBUILD
と表示名で呼び出される新しい項目タイプの定義が含まれていますMy Custom Build
。プロジェクトが Visual Studio で再度開かれると、アイテム タイプ リストで新しいアイテム タイプが使用可能になります。これを選択すると、このアイテムのタイプが and に設定MYBUILD
され、この時点ではその種類のアイテムに対してルールが定義されていないため、ビルドから単純に無視されます。
ファイル拡張子をカスタム アイテム タイプ MSVC に関連付けるには
これは、次の 2 つの手順で行われます。
ファイル拡張子をコンテンツ タイプに関連付けます。mybuild.xml
これは、次のようにエントリを追加することによって行われます。
<FileExtension Name="*.myext" ContentType="MYBUILD" />
コンテンツ タイプをアイテム タイプに関連付けます。mybuild.xml
これは、次のようにエントリを追加することによって行われます。
<ContentType Name="MYBUILD" DisplayName="My Custom Build" ItemType="MYBUILD" />
この時点で、mybuild.xml
次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<ProjectSchemaDefinitions xmlns="http://schemas.microsoft.com/build/2009/properties"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib">
<ItemType Name="MYBUILD" DisplayName="My Custom Build" />
<FileExtension Name="*.hh" ContentType="MYBUILD" />
<ContentType Name="MYBUILD" DisplayName="My Custom Build" ItemType="MYBUILD" />
</ProjectSchemaDefinitions>
今行ったこと: Visual Studio は、拡張機能.myext
に type のデータが含まれていることを認識するようになりましたMYBUILD
。また、 type のコンテンツを持つファイルが typeMYBUILD
のアイテムであることも認識していますMYBUILD
。Visual Studio でプロジェクトを再度開くと、拡張子 のファイルを追加すると.myext
、Visual Studio はこれらのファイルのアイテム タイプを自動的に "My Custom Build" に設定します。
カスタム アイテム MSVC でカスタム ツールを実行するには
この時点で、カスタム項目タイプに関連付けられたファイル拡張子があります。そのアイテム タイプを一連のビルド ルールに関連付ける必要があります。
アイテム タイプをビルド ターゲットに関連付けます。mybuild.targets
PropertyPageSchema と同じ ItemGroup に以下を追加します。
<AvailableItemName Include="MYBUILD">
<Targets>_MYBUILD</Targets>
</AvailableItemName>
そのため、次のようになります。
<ItemGroup>
<PropertyPageSchema
Include="$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml" />
<AvailableItemName Include="MYBUILD">
<Targets>_MYBUILD</Targets>
</AvailableItemName>
</ItemGroup>
カスタム ターゲットを定義します。これは、ビルド タスクの構成に使用する必要があるすべてのプロパティと変数をマップする場所です。次のステップでは、コマンド ライン テンプレートを使用するビルド タスクを使用するため、ターゲットで実際のコマンド ラインを構成します。ItemGroup
これは、前のステップで定義したすぐ下になります。
<Target Name="_MYBUILD">
<MYBUILD CommandLineTemplate="explorer $(IntDir)"></MYBUILD>
</Target>
コマンド ラインは単にエクスプローラー ウィンドウを開きます。
カスタム ビルド タスクを宣言します。Target
これは、前のステップの直後に続きます。
<UsingTask TaskName="MYBUILD" TaskFactory="XamlTaskFactory" AssemblyName="Microsoft.Build.Tasks.v4.0">
<Task>$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml</Task>
</UsingTask>
ここでは、ファイルで定義されるタスクを参照しmybuild.xml
ます。
でmybuild.xml
、次の規則を追加します。
<Rule Name="MYBUILD" PageTemplate="tool" DisplayName="My Custom Build" Order="200"/>
今行ったこと: カスタム アイテム タイプをカスタム ターゲットにマッピングし、エクスプローラ ウィンドウを開くカスタム ビルド タスクを作成しました。ファイルをビルド.myext
すると、Visual Studio がエクスプローラー ウィンドウをポップすることが期待できるようになりました。
ビルドのカスタマイズ
プロパティ ウィンドウに構成フィールドを追加し、それらを変数にマップし、それらを使用してタスクを構成する方法があります。これについてはここでは説明しませんが、上部にあるリンクで説明しています。