4

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;
4

2 に答える 2

3

C#およびVBプロジェクトには、 VSProjectにキャストできる'Object'プロパティがあり、そこから参照にアクセスできます。それらのページにサンプルVBコードがあります。

于 2011-07-04T14:40:46.193 に答える
3

ProjectオブジェクトのObjectプロパティから、 VB / C#固有のVSProjectオブジェクトにアクセスできます。VSProjectにはReferences、個々の参照にドリルダウンできるプロパティがあります。

Visual Studioに読み込まれるすべてのプロジェクトが必ずしも.NETアセンブリへの参照をサポートするわけではないため、このようにする必要があります。したがって、C#/ VB(およびその他の.NET言語)に特化したものである必要があります。コアProjectオブジェクトからではありません。

于 2011-07-04T14:40:55.403 に答える