无法投DTE,项目或解决方案,以VCProject和VCCodeModel(Unable to ca

2019-08-04 00:02发布

我想获得关于C + =程序的一些信息,通过代码。 我已经取得了一些成功EnvDTE,现在我需要使用VCProject和VCCodeModel和我遇到的问题铸件(希望这是所有...)

在工人阶级,我有一个DTE "application"从连接通过。

我有:

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

我想用“工程”,而不是解决方案,因为我已经在网上找到的例子中的第一个项目 - 如下 - 但主要是,我想有一些作品第一次。

对于VCProject,我已经试过(关闭微软的网站,以及所有其它网络的例子):

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);
  }    
}

无论给例外:

"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 ......这可能吗?

可有人请给我一个想法? 谢谢。

Answer 1:

当您尝试投CodeModel到不同VCCodeModel版本出现此问题。 没有为每个VS版本VCCodeModel.dll。



文章来源: Unable to cast DTE, project or solution to VCProject and VCCodeModel