.tt
拡張機能からいくつかのファイルに対してカスタム ツールを保存/実行したいと考えています。ソリューション/プロジェクト内のすべてのファイルをループするのではなく、ファイルの相対 (または完全) パスを使用して、カスタム ツールの保存/実行を実行できるようにしたいと考えています。
ProjectItem
ファイル ( ) のパスを指定してオブジェクトを取得し、$(SolutionDir)/MyProject/MyFile.tt
メソッドを実行できるようにする方法はありますか?
.tt
拡張機能からいくつかのファイルに対してカスタム ツールを保存/実行したいと考えています。ソリューション/プロジェクト内のすべてのファイルをループするのではなく、ファイルの相対 (または完全) パスを使用して、カスタム ツールの保存/実行を実行できるようにしたいと考えています。
ProjectItem
ファイル ( ) のパスを指定してオブジェクトを取得し、$(SolutionDir)/MyProject/MyFile.tt
メソッドを実行できるようにする方法はありますか?
FindProjectItem
タイプのメソッドを使用してEnvDTE.Solution
、現在のソリューション内のファイルをその名前で検索できます。メソッドは現在のExecuteCommand
UI コンテキストに依存します。そうしないと、呼び出しは失敗します。
private bool TryExecuteTextTemplate(string filename)
{
var dte = (DTE2)this.GetService(typeof(SDTE));
Solution solution = dte.Solution;
if ((solution != null) && solution.IsOpen)
{
VSProjectItem projectItem;
ProjectItem item = solution.FindProjectItem(filename);
if (item != null && ((projectItem = item.Object as VSProjectItem) != null))
{
// TODO: track the item in the Solution Explorer
try
{
projectItem.RunCustomTool();
return true;
}
catch (COMException)
{
}
}
}
return false;
}