问题描述
我想获得关于C + =程序的一些信息,通过代码。我有一些成功的EnvDTE,现在我需要用VCProject和VCCodeModel和我遇到的问题铸件(希望这是所有...)
I am trying to get some information about c+= programs, through code. I have had some success with EnvDTE, now I need to use VCProject and VCCodeModel and I am running into casting problems (hope that is all...)
在工作一流的,我有一个DTE 应用程序
从连接通过
In the working class, I have a DTE "application"
passed from the Connect.
我有:
EnvDTE.Project project = application.SelectedItems.Item(1).Project;
EnvDTE.Solution sol = (EnvDTE.Solution)application.Solution;
我想用工程,而不是解决方案,因为我有例子中的第一个项目在网络上找到 - 如下 - 但主要是,我想有一些作品第一个
I would like to use "project", not the first project in the solution as the examples I have found on the web - as below - but mostly, I would like to have something that works first.
有关VCProject,我已经试过(关闭微软的网站,以及所有其他网站的例子):
For VCProject, I have tried (off Microsoft's web site, and all other web examples):
VCProject vcProject = (VCProject)application.Solution.Projects.Item(1).Object;
MessageBox.Show(vcProject.ProjectDirectory);
或只是...
VCProject vcProject = (VCProject)project.Object;
有关VCCodeModel,我翻译到C#的:
For VCCodeModel, I translated to 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);
}
}
均可以得到例外:
Both give 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
...这可能吗?
How can I set this up ? Preferably using the "project"... or application.SelectedItems
... Is it possible ?
有人可以请给我一个想法?谢谢你。
Can somebody please give me an idea? Thank you.
推荐答案
当您尝试投CodeModel到一个不同的版本VCCodeModel出现此问题。没有为每个VS版本VCCodeModel.dll。
This problem arises when you try to cast CodeModel to a different VCCodeModel version. There is a VCCodeModel.dll for each VS version.
这篇关于无法投DTE,项目或解决方案VCProject和VCCodeModel的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!