如何在Visual Studio 2010解决方案中以编程方式查找并迭代所有项目和dll引用?我可以遍历所有项目并找到Project.ProjectItems属性和Project.Properties,但没有找到任何引用引用的方法。这是在插件中发生的,因此建议使用DTE解决方案来遍历文件。根据下面的答案提出的解决方案:您需要找到并包含对VSLangProj.dll的引用(例如在Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies中),然后可以像这样迭代所有选定的项目的项目和DLL引用:
我在连接中进行了如下设置:
foreach (Project project in (object[])_applicationObject.ActiveSolutionProjects)
{
VSProject vsProject = project.Object as VSProject;
if (vsProject != null)
{
foreach (Reference reference in vsProject.References)
{
// Do cool stuff here
}
}
}
针对Tomas Lycken的信息:
_applicationObject是我的插件中的一个私有成员,例如:
private DTE2 _applicationObject;
我在连接中进行了如下设置:
...
public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom)
{
_applicationObject = (DTE2)application;
DTE.ActiveSolutionProjects
让我达到了想要的效果,所以我不需要实例化_applicationObject
。如果没有DTE提示,我就找不到它了。非常感谢! - Tomas Aschan