次の方法で共有


プロジェクト機能拡張の概要

オブジェクト モデルは、VSLangProj.dll、VSLangProj2.dll、VSLangProj80.dll、VSLangProj90a.dll、および VSLangProj100.dll の VSLangProj アセンブリへの参照をプロジェクトに追加するだけで使用できます。詳細については、「方法: [参照の追加] ダイアログ ボックスを使用して参照を追加または削除する」を参照してください。これは、オブジェクト モデルがプロジェクトのアド インと拡張 IDE を自動化する型に対して使用できることを意味します。このトピックの例は、Visual Basic 言語および Visual C# 言語で作成されています。この例の実行方法の詳細については、「方法 : オートメーション オブジェクト モデルのコード例をコンパイルおよび実行する」を参照してください。アドインは、Visual Basic、Visual C#、Visual C++ など Visual Studio でホストされる言語で記述できます。VSLangProjVSLangProj2VSLangProj80VslangProj90、および VslangProj100 の各メンバーに関するリファレンス トピックには、各言語の構文も含まれています。オートメーション プロジェクトの種類およびオートメーションの機能については、「アドインおよびウィザードの作成」を参照してください。

VSLangProj 名前空間

これらの名前空間には、Visual Basic プロジェクトと Visual C# プロジェクトのすべてのクラス、インターフェイス、および列挙体が含まれています。名前空間内のオブジェクトの一覧については、「Visual Basic および Visual C# プロジェクトの機能拡張オブジェクト モデル」を参照してください。

EnvDTE アセンブリと共に VSLangProj アセンブリを使用した場合に発生する可能性のあるエラー

EnvDTE アセンブリおよび 1 つ以上の VSLangProj アセンブリを参照するプロジェクトを作成した場合に、次の実行時エラーが発生することがあります。

"ハンドルされていない例外: System.IO.FileNotFoundException: ファイル 'EnvDTE, Version=7.0.3300.0' を読み込み中にエラーが発生しました。"

このエラーは、実行時の型解決における競合が原因で発生します。つまり、Visual Studio 2005 に付属している EnvDTE のバージョンが 8.0.xx であるにもかかわらず、プロジェクトの構成では、このアセンブリの以前のバージョン 7.0.xx を参照していることが原因です。この問題を修正するには、新しいバージョンの EnvDTE 用のバインディング リダイレクトを、プロジェクトの構成 (.config) ファイルに追加する必要があります。これにより、Visual Studio は、新しいバージョンの EnvDTE を読み込み、エラーの発生を防ぐことができます。

このためには、"アプリケーション構成ファイル" をプロジェクトに追加し、ファイルの内容を次のように置き換えます。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-
        com:asm.v1" appliesTo="v2.0.50318">
            <dependentAssembly>
                <assemblyIdentity name="EnvDTE" publicKeyToken=
                "b03f5f7f11d50a3a"/>
                <bindingRedirect oldVersion="7.0.3300.0" 
                newVersion="8.0.0.0"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>

VSProject2 オブジェクト

このオブジェクトは、機能拡張モデル内の他のオブジェクトにアクセスできます。DTE オブジェクトは、Visual Studio オートメーション モデルのトップレベル オブジェクトです。汎用機能拡張モデルでは、プロジェクトは汎用的な Project オブジェクトによって表されます。Project オブジェクトには Object プロパティがあります。このプロパティの型は、プロジェクトの言語によって実行時に決定されます。Visual Basic プロジェクトまたは Visual C# プロジェクトでは、Object プロパティは VSProject2 型のオブジェクトを返します。Object プロパティは Object 型であるため、参照を VSProject2 型にキャストする必要があります。VSProject2 項目への参照を設定した後、プロジェクトのプロパティ、構成、ファイル、フォルダー、Imports ステートメント、および参照を操作できるようになります。

詳細については、「VSProject2 オブジェクトの概要」を参照してください。

References オブジェクトと Reference オブジェクト

VSProject2 オブジェクトに含まれる References プロパティは、Reference3 オブジェクトのコレクションを保持します。Reference3 オブジェクトは、プロジェクト参照を表し、主に、Remove メソッドをサポートする読み取り専用のオブジェクトです。References オブジェクトは、参照の追加 (COM、.NET アセンブリ、ActiveX、その他のプロジェクト) およびイベントの発生 (参照の追加、削除、および変更) をサポートしています。

References オブジェクトには、プロジェクトの Web 参照は含まれません。WebReferencesFolder プロパティの ProjectItems プロパティにアクセスすることにより、プロジェクトの Web 参照を取得できます。

詳細およびコード例については、Reference オブジェクト、Reference3 オブジェクト、References コレクション、References プロパティ、および WebReferencesFolder プロパティに関するトピックを参照してください。

Imports オブジェクト

VSProject2 オブジェクトに含まれる Imports プロパティは、Visual Basic プロジェクト全体に適用される Imports ステートメントのコレクションを保持します。Imports ステートメントがこのコレクションに追加されると、対応する Imports ステートメント (たとえば、Imports VSLangProj) をコード ファイルに追加する必要がなくなります。このオブジェクトは、Imports ステートメントの追加と削除、およびステートメントの追加と削除に応じたイベントの発生をサポートしています。Visual C# プロジェクトにはこれに相当するものがないため、VSProject2.Imports プロパティは、Visual C# プロジェクトに適用された場合、Nothing または null を返します。詳細については、「Imports」を参照してください。

VSProjectItem オブジェクトと BuildManager オブジェクト

VSProjectItem オブジェクトは、VSProject2 オブジェクトに対応するプロジェクト項目です。汎用機能拡張モデルでは、汎用的な ProjectItem オブジェクトはプロジェクト項目を表します。Object プロパティの型は Object です。Visual Basic プロジェクトまたは Visual C# プロジェクトでは、このプロパティの型は VSProjectItem になります。VSProjectItem オブジェクトには、親プロジェクト項目とプロジェクトにリンクするプロパティ、およびその項目に対してカスタム ツールを強制的に実行するメソッドが含まれています。BuildManager オブジェクトは、カスタム ツールの出力を処理します。詳細については、「BuildManager オブジェクトの概要」と、RunCustomTool メソッド、VSProjectItem オブジェクト、および BuildManager オブジェクトに関するトピックを参照してください。

Properties プロパティ

汎用機能拡張モデルでは、次の 3 つのオブジェクトに Properties プロパティがあります。

  • Project オブジェクト   このオブジェクトのプロパティは、IDE でプロジェクトの [プロパティ ページ] ダイアログ ボックスを開いたときに [共通プロパティ] タブに表示されるプロパティに相当します。

  • Configuration オブジェクト   このオブジェクトのプロパティは、IDE でプロジェクトの [プロパティ ページ] ダイアログ ボックスを開いたときに [構成プロパティ] タブに表示されるプロパティに相当します。

  • ProjectItem オブジェクト   このオブジェクトのプロパティは、ソリューション エクスプローラーでプロジェクト項目を選択したときに [プロパティ] ウィンドウに表示されるプロパティに相当します。

  • いずれの場合にも、Properties プロパティは Property 型のオブジェクトのコレクションです。Property オブジェクトをコレクションから取得するには、プロパティの 1 から始まるインデックスまたはプロパティの名前を指定します。コレクションの内容は、言語によって異なります。プロジェクト項目の場合、内容は項目がファイルかフォルダーかによっても異なります。

参照

概念

Visual Studio オートメーションの範囲

その他の技術情報

アドインおよびウィザードの作成