Надстройка Visual Studio 2010: Как найти ссылки на проект? - PullRequest
4 голосов
/ 04 июля 2011

Как программно найти и перебрать все ссылки на проекты и библиотеки DLL в решении Visual Studio 2010?

Я могу перебрать все проекты и нашел свойства Project.ProjectItems и Project.Properties, но не нашел способа ссылаться на ссылки (предназначено для каламбура).

Это происходит внадстройка, поэтому решение DTE предпочтительнее для всех, кто предлагает перебирать файлы.

Предлагаемое решение на основе ответов ниже:

Вам необходимо найти и включить ссылкув VSLangProj.dll (например, в Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies)

Затем вы можете выполнить итерацию всех проектов и ссылок на все выбранные проекты следующим образом:

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;

Ответы [ 2 ]

3 голосов
/ 04 июля 2011

Вы можете получить доступ к объекту VB / C # VSProject из свойства Object объекта Project.VSProject имеет свойство References, с помощью которого вы можете перейти к отдельным ссылкам.

Это должно быть так, если подумать, поскольку не все проекты, загруженные в Visual Studio, обязательно будут поддерживать ссылкидля сборок .NET, поэтому он должен быть чем-то специализированным для C # / VB (и других языков .NET), а не вне основного объекта Project.

3 голосов
/ 04 июля 2011
Проекты

C # и VB имеют свойство 'Object', которое можно преобразовать в VSProject , из которого можно получить доступ к ссылкам .На этих страницах приведен пример кода VB.

...