Visual Studio 2010 插件:如何定位项目引用?

Posted

技术标签:

【中文标题】Visual Studio 2010 插件:如何定位项目引用?【英文标题】:Visual Studio 2010 Add-in: How to locate project references? 【发布时间】:2011-09-28 04:54:07 【问题描述】:

如何以编程方式查找和迭代 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;

【问题讨论】:

我正在尝试重新创建它。如何实例化_applicationObject,它是什么类型的? 谢谢!我试图在一个普通的宏中做一个简化的版本。事实证明,静态属性 DTE.ActiveSolutionProjects 将我带到了我想要的位置,所以我不需要实例化 _applicationObject。如果没有 DTE 提示,就不会找到它。非常感谢! 【参考方案1】:

您可以从 Project 对象的 Object 属性访问特定于 VB/C# 的 VSProject 对象。 VSProject 有一个References 属性,您可以通过它深入了解各个引用。

如果您考虑一下,它必须是这种方式,因为并非所有在 Visual Studio 中加载的项目都必须支持对 .NET 程序集的引用,因此它必须是专门用于 C#/VB(和其他 .NET 语言)的),而不是脱离核心 Project 对象。

【讨论】:

两个答案都是正确的,并且同时到达,但我将它提供给您以获取更多有用的 cmets。非常感谢【参考方案2】:

C# 和 VB 项目有一个“对象”属性,您可以将其转换为VSProject,您可以从中访问references。这些页面上有示例 VB 代码。

【讨论】:

以上是关于Visual Studio 2010 插件:如何定位项目引用?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 7 任务栏中固定 Visual Studio 解决方案

如何在 Visual Studio 2010 中并行化数据驱动的单元测试?

将crm 4插件项目从visual studio 2005升级到visual studio 2010

visual studio 2010的css代码提示插件

Visual Studio 2010 速成版的 Javascript 插件

Visual Studio2015平台工具集