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