C++ Visual Studio プロジェクト (vcxproj) に新しいビルド ターゲットを追加しました。
このターゲットは、プロジェクトのビルド時にカスタム ツールを実行します。ツールは、指定した ContentType と ItemType に従って、ソリューション上の特定のファイルを処理します。これは、「ビルド」や「クリーン」などのプロジェクト アクションでうまく機能します。
ここで、「コンパイル」に相当するアクションをサポートしたいと思います。つまり、ソリューション エクスプローラーでファイルを右クリックし、この特定のファイルをカスタム ツールで処理することを選択します (「コンパイル」が「C/ C++ コード」ファイルの種類)。
これを行うために Visual Studio マクロを追加できることはわかっています。多くのユーザーに展開するのが難しいため、これは私にとっては良い解決策ではありません。より良い解決策は、vcxproj (またはそれによってインポートされたファイル) をカスタマイズすることです。
msbuild ターゲット スクリプトまたは PropertyPageSchema を使用して、メニューに「コンパイル」のようなアクションを追加する (または「C/C++ コード」以外のファイル タイプの「コンパイル」動作を変更する) ことは可能でしょうか。
更新: MSDN フォーラムでディスカッションを開始しました。マイクロソフトのモデレーターから回答を得て、いくつかの問題を解決しましたが、問題はまだ解決されていません。
更新 (2016)、VS2015 用
AvailableItemName
VS2015でこれを解決するようです。たとえば、Excel ファイルを処理するためのカスタム ターゲットがあります。
ターゲット ファイル:
<ItemGroup>
<PropertyPageSchema Include="$(SolutionDir)\ExcelOptions.xml" />
</ItemGroup>
<ItemGroup>
<AvailableItemName Include="Excel">
<Targets>ProcessExcel</Targets>
</AvailableItemName>
</ItemGroup>
オプション ファイル:
<FileExtension Name=".xls" ContentType="Excel"/>
<ContentType Name="Excel" DisplayName="Excel File" ItemType="Excel"/>
<ItemType Name="Excel" DisplayName="Excel File"/>
Excel ファイルを選択した後、ソリューション エクスプローラーのコンテキスト メニューでコンパイルにアクセスできるようになり、CTRL-F7 も機能します(Excel ファイルではなく、VS で編集できるファイルの場合)。