9

メタデータに基づいてテキスト(インターフェイスとクラスを表す)を生成するプロジェクトがあります。この生成されたコードを新しいクラスとして挿入し、特定のプロジェクトとディレクトリの下で現在開いているソリューションに直接インターフェイスしたいと思います。クラスを生成するメニューツールを作成しますが、その方法がわからないのは、カスタムVisualStudioExtension内から次のアイテムにアクセスすることです。

  1. 現在のソリューションを繰り返し、生成されたコードをダンプするプロジェクトを見つけます。
  2. Visual Studio内で新しいファイルウィンドウを開き、ツールから生成されたテキストをそのウィンドウに直接挿入します。
  3. カスタム拡張機能内から、現在のソリューション内の特定のプロジェクトに新しいフォルダーを作成します。

編集-明確にするために、新しいファイルを開き(たとえば、プロジェクトを右クリック->追加->新しいクラス)、カスタムVisualStudioExtension内からそのファイルにテキストを挿入する必要があります。

ありがとう

4

1 に答える 1

14

Visual Studio拡張機能(ToolWindowPane)から新しいファイルを作成するには、最初にGetServiceメソッドを使用します。

// Get an instance of the currently running Visual Studio IDE
DTE dte = (DTE)GetService(typeof(DTE));

次に、ソリューションが現在開いていることを確認します。開いているソリューションがない場合、ファイルの生成は機能しません。

string solutionDir = System.IO.Path.GetDirectoryName(dte.Solution.FullName);

3番目に、DTEオブジェクトから新しいファイルを生成します。

dte.ItemOperations.NewFile(@"General\Visual C# Class", "ObjectOne", EnvDTE.Constants.vsViewKindTextView);

新しいファイルを作成したら、次のコードを使用してそのファイルのテキストにアクセスし、生成されたテキストに置き換えます。

TextSelection txtSel = (TextSelection)dte.ActiveDocument.Selection;
TextDocument txtDoc = (TextDocument)dte.ActiveDocument.Object("");

txtSel.SelectAll();
txtSel.Delete();
txtSel.Insert("Hello World");
于 2012-04-15T05:25:24.853 に答える