我试图通过代码获取有关 c+= 程序的一些信息。我在 EnvDTE 方面取得了一些成功,现在我需要使用 VCProject 和 VCCodeModel,并且我遇到了转换问题(希望这就是全部......)
在工人阶级中,我有一个DTE"application"
从连接通过。
I have:
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 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
... 是否可以 ?
有人可以给我一个主意吗?谢谢。