gpt4 book ai didi

envdte - DTE : attempt to cast ProjectItem's Window. 文档到 TextDocument 抛出异常

转载 作者:行者123 更新时间:2023-12-01 15:02:30 27 4
gpt4 key购买 nike

Carlos J. Quintero 似乎对 DTE 了解很多。在今年 3 月更新并发布在 Web 上的一篇文章中 (http://www.mztools.com/articles/2007/mz2007027.aspx),他说 EnvDTE 上的 Open 方法。 ProjectItem 返回一个 EnvDTE.Window,其 Document 属性可以转换为 EnvDTE.TextDocument。

但是当我尝试这个时,我得到一个异常(HRESULT:0x80004002 [E_NOINTERFACE])。 Open 返回的 __ComObject 似乎不知道 TextDocument:

enter image description here

我的 VB .Net 代码(在 WOW 中在 Windows 7 Pro 64 下运行的 VS2008)的(提取并略微编辑)摘录:

...handler for BuildEvents.OnBuildBegin recursively traverses all items in all projects; filters names to find those containing ".Designer.vb" (apparently works fine to here). For each found, want to replace certain text; to do so, need TextDocument object:

'the below returns __ComObject instead of EnvDTE.Window
Dim ItemWindow as EnvDTE.Window = ProjectItem.Open(EnvDTE.Constants.vsext_vk_Code)
'the below throws exception
Dim ItemTextDocument as EnvDTE.TextDocument = CType(ItemWindow.Document, EnvDTE.TextDocument)

完整错误:

Unable to cast COM object of type 'System.__ComObject' to interface type 'EnvDTE.TextDocument'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{CB218890-1382-472B-9118-782700C88115}' failed due to the following error: Interface wordt niet ondersteund (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).

怎么了?任何帮助表示赞赏。

最佳答案

我遇到了同样的问题

您可以通过指定要从窗口对象获取的文档类型来解决此问题

public static void SetCode(ProjectItem projectItem, string newCode)
{

Window EditWindow = projectItem.Open(Constants.vsext_vk_Code);
EditWindow.Visible = true; //hide editor window

TextDocument TextDocument = (TextDocument)EditWindow.Document.Object("TextDocument");

EditPoint EditPoint = TextDocument.StartPoint.CreateEditPoint();
EditPoint.Delete(TextDocument.EndPoint); //delete content
EditPoint.Insert(newCode);

EditWindow.Close(vsSaveChanges.vsSaveChangesYes);
}

您必须自己将其转换回 VB.NET

关于envdte - DTE : attempt to cast ProjectItem's Window. 文档到 TextDocument 抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17003414/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com