Visual Studio 拡張性 SDK を使用すると、ProjectItem
. このアイテムからテキストを取得しようとしているので、いくつかの置換を行うことができます。私が見た方法は、 のプロパティを使用することDTE2.ActiveDocument.Selection
です。しかし、これDTE2.ActiveDocument
は必要なドキュメントではないため、使用できません。ProjectItem.Document
プロパティを含むオブジェクトにアクセスしようとするとSelection
、ドキュメントは常に null になり、null 参照例外が発生します。また、機能しない次のことも試しました(つまり、Document
有効ですが、Selection
プロパティがnullです):
Document document = null;
if (!projectItem.IsOpen)
document = projectItem.Open().Document;
次のことを試しましたが、扱っている ProjectItem がアクティブなドキュメントではないため、正しいドキュメントが表示されませんでした。ProjectItem.Document
代わりに使用する次のコードに似たものを実装する方法はありますか?
TextSelection selection = DTE2.ActiveDocument.Selection;
selection.SelectAll();
string text = selection.Text;
selection.Delete();
//Do replacements
selection.Insert(text);
要約すると、ProjectItem インスタンスから TextSelection インスタンスを取得するにはどうすればよいですか?