gpt4 book ai didi

c# - 无法将 DTE、项目或解决方案转换为 VCProject 和 VCCodeModel

转载 作者:太空狗 更新时间:2023-10-29 20:39:59 27 4
gpt4 key购买 nike

我正在尝试通过代码获取有关 c+= 程序的一些信息。我在 EnvDTE 上取得了一些成功,现在我需要使用 VCProject 和 VCCodeModel,但我遇到了转换问题(希望这就是全部......)

在工作类中,我有一个 DTE “应用程序” 从 Connect 传递过来。

我有:

EnvDTE.Project project = application.SelectedItems.Item(1).Project;
EnvDTE.Solution sol = (EnvDTE.Solution)application.Solution;

我想使用“项目”,而不是解决方案中的第一个项目,就像我在网络上找到的示例一样 - 如下 - 但大多数情况下,我希望有一些先工作的东西。

对于 VCProject,我已经尝试过(关闭 Microsoft 的网站,以及所有其他网络示例):

VCProject vcProject = (VCProject)application.Solution.Projects.Item(1).Object;
MessageBox.Show(vcProject.ProjectDirectory);

或者...只是

VCProject vcProject = (VCProject)project.Object;

对于 VCCodeModel,我翻译成 c# http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.vccodemodel.vccodeinclude.aspx :

public void GetAllIncludes()
{
VCCodeModel vcCM = (VCCodeModel)application.Solution.Item(1).CodeModel;
foreach (VCCodeInclude vcInclude in vcCM.Includes)
{
MessageBox.Show(vcInclude.DisplayName);
}
}

两者都给出异常(exception):

"unable to cast com object of type 'system.__comobject' to interface type Microsoft.VisualStudio.VCCodeModel"
"unable to cast com object of type 'Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCProjectShim' to type Microsoft.VisualStudio.Project.VisualC.VCProjectEngine.VCProject"

我该如何设置?最好使用“项目”...或 application.SelectedItems...这可能吗?

有人可以给我一个主意吗?谢谢。

最佳答案

当您尝试将 CodeModel 转换为不同的 VCCodeModel 版本时会出现此问题。每个 VS 版本都有一个 VCCodeModel.dll。

关于c# - 无法将 DTE、项目或解决方案转换为 VCProject 和 VCCodeModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13850291/

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