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 インスタンスを取得するにはどうすればよいですか?