References.Add メソッド
更新 : 2007 年 11 月
プロジェクトに新しい参照を追加します。
名前空間 : VSLangProj
アセンブリ : VSLangProj (VSLangProj.dll 内)
構文
'宣言
Function Add ( _
bstrPath As String _
) As Reference
'使用
Dim instance As References
Dim bstrPath As String
Dim returnValue As Reference
returnValue = instance.Add(bstrPath)
Reference Add(
string bstrPath
)
Reference^ Add(
[InAttribute] String^ bstrPath
)
function Add(
bstrPath : String
) : Reference
パラメータ
bstrPath
型 : System.String必ず指定します。COM 参照または .NET Framework 参照のパス。
パラメータは次の 3 つの形式のいずれかで指定します。
単純な .NET Framework オブジェクト名 ("System" など)。
.NET Framework ファイル名 (.tlb ファイル、.dll ファイル、または .ocx ファイル)。
COM ライブラリ ファイル (.tlb ファイル、.dll ファイル、.ocx ファイル、または .exe ファイル)。COM オブジェクトの場合は、ファイル名を完全パスで指定します ("D:\SomeApplication\SomeApp.dll" など)。後述の「COM 参照」セクションに記載されている、COM の .exe ファイルの参照を追加する場合の制限事項を参照してください。
戻り値
Reference オブジェクトを返します。
解説
bstrPath パラメータが示すファイルにタイプ ライブラリがない場合、または参照を解決できない場合 (「参照の解決」セクションを参照) は、エラーが発生します。
このメソッドでは、新しい参照の Identity、Culture、MajorVersion、MinorVersion、BuildNumber、および RevisionNumber がプロジェクトに既に存在している参照と重複している場合でも、エラーは発生しません。この場合、bstrPath パラメータで指定した参照は、既にプロジェクトに追加されています。プロジェクトに既に存在している、同一の参照の ProjectItem が代わりに返されます。
参照の Identity が同じでも、MajorVersion、MinorVersion、BuildNumber、RevisionNumber、または Culture のいずれかが異なる参照がプロジェクトで見つかると、このメソッドはエラーになります。
参照を削除するには、Remove を使用します。
COM 参照
このメソッドは、参照先のファイルに含まれる最初のタイプ ライブラリの Reference オブジェクトを返します。
このメソッドは、タイプ ライブラリ ファイル内のすべてのオブジェクト、およびその依存関係を追加します。したがって、このメソッドを 1 回呼び出すことによって、References コレクションに複数の参照が追加される場合があります。
COM の .exe ファイルがタイプ ライブラリを格納している場合は、参照として追加される可能性があります。その場合は、.exe ファイルに格納されているすべての登録済みタイプ ライブラリへの参照が追加されます。
.NET Framework 参照
このメソッドは、参照先アセンブリの Reference オブジェクトを返します。
これらの参照先にはタイプ ライブラリ ファイルがないため、依存アセンブリは参照としてプロジェクトに追加されません。
参照先のアセンブリに埋め込みタイプ ライブラリが含まれていても、そのアセンブリへの参照だけが追加されます。
.NET Framework の .exe ファイルを参照することもできます。
参照の解決
プロジェクト ファイルを保存するときに、参照のパスはプロジェクトの一部として保存されません。このため、コンピュータ間でプロジェクト ファイルをより簡単に共有できます。たとえば、System.dll ファイルは、コンピュータ A では C:\Bigfolder フォルダに格納され、コンピュータ B では D:\Smallfolder フォルダに格納されているとします。.NET Framework の参照では、参照のアセンブリ名だけが永続化されます。つまり、System.dll の場合は、"System" が永続化されます。
コンパイラは、"C:\Bigfolder\system.dll" のように、完全パスとファイル名の形式で指定された参照だけを受け入れます。したがって、デザイン時にアセンブリの位置を特定するための一貫した方法が必要になります。アセンブリは、アセンブリへの完全パスを見つけることができた場合に解決されます。解決されたパスとは、参照への完全パスのことです。前述の System を例にとると、System.dll ファイルが C:\Bigfolder フォルダにある場合に System.dll が解決されると、解決されたパスは C:\Bigfolder\System.dll になります。
参照を解決するには、開発環境で参照先を基にして検索名を作成し、参照先を検索します。拡張子 .dll を含む名前が検索名として作成されます。これは、参照先として保存されている名前に拡張子 .dll が含まれている場合もあれば、含まれていない場合もあるためです。ReferenceOne と ReferenceTwo.dll という 2 つの参照は、それぞれ ReferenceOne.dll と ReferenceTwo.dll という名前になります。
開発環境では、次の順序で名前が検索されます。一致した項目が見つかると、検索はすぐに終了します。
プロジェクトの階層構造内。
参照の検索パス (プロジェクト レベルの設定) 内。詳細については、「ReferencePath」を参照してください。
コンポーネント ピッカーが参照を列挙するときに使用するディレクトリ内。このディレクトリは、インストール時にレジストリに格納されます。
各参照の解決は、プロジェクトを読み込むときに行われます。Add メソッドに渡された bstrPath パラメータが完全パスで指定されていない場合は、新しい参照でも解決が発生します。
参照が解決できなかった場合は、エラーが発生します。COM 参照の場合は、bstrPath パラメータに完全パス名を指定する必要があるため、常に解決します。bstrPath パラメータが、.NET Framework 名 (SomeObject など)、またはパス指定のない .NET Framework ファイル名 (SomeObject.dll など) の場合、参照を解決できず、エラーが発生する可能性があります。
例
' Macro Editor
Imports VSLangProj
Sub AddExample()
' This example assumes that the first project in the solution is
' either a Visual Basic or C# project.
Dim aVSProject As VSProject = _
CType(DTE.Solution.Projects.Item(1).Object, VSProject)
Dim refs As References = aVSProject.References
' Adds a reference to a compiled .NET project.
refs.Add("C:\path\program.dll")
' Adds a reference to an installed ActiveX control.
refs.Add("C:\WINNT\system32\msmask32.ocx")
' Adds a reference to System.dll as an example of adding a
' reference using just the simple name.
refs.Add("System")
End Sub
アクセス許可
- 直前の呼び出し元に対する完全な信頼。このメンバは、部分的に信頼されているコードから使用することはできません。詳細については、「部分信頼コードからのライブラリの使用」を参照してください。