- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
使用 Visual Studio 可扩展性 SDK 时,我有一个 ProjectItem
的实例.我正在尝试从该项目中获取文本,以便我可以对其进行一些替换。我看到这样做的方式是使用 DTE2.ActiveDocument.Selection
上的属性.然而,DTE2.ActiveDocument
不是我需要的文件,所以我不能使用它。当我尝试访问包含 Selection
的 ProjectItem.Document
对象时属性文档始终为空,我得到一个空引用异常。我还尝试了以下不起作用的方法(即 Document
有效,但 Selection
属性为空):
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 实例?
最佳答案
像往常一样,在处理 VS SDK 时,答案有点晦涩难懂。我解决它的方法(正确或错误)是制作 ProjectItem实例化事件文档,然后使用 DTE2.ActiveDocument.Selection
获取文本的属性。这是通过以下方式实现的:
if (!projectItem.IsOpen)
projectItem.Open(@"{7651A701-06E5-11D1-8EBD-00A0C90F26EA}").Document.Activate(); //EnvDTE.Constants.vsViewKindCode
TextSelection selection = _vsApp.ActiveDocument.Selection;
selection.SelectAll();
string text = selection.Text;
selection.Delete();
//Do replacements
text = ReplaceTemplateValues(text, replacements);
selection.Insert(text);
有没有更好的办法?
关于c# - Visual Studio 可扩展性 - ProjectInfo.Document 始终为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13707464/
使用 Visual Studio 可扩展性 SDK 时,我有一个 ProjectItem 的实例.我正在尝试从该项目中获取文本,以便我可以对其进行一些替换。我看到这样做的方式是使用 DTE2.Acti
我是一名优秀的程序员,十分优秀!