References.Add メソッド
プロジェクトに新しい参照を追加します。
名前空間: VSLangProj
アセンブリ: VSLangProj (VSLangProj.dll 内)
構文
'宣言
Function Add ( _
bstrPath As String _
) As Reference
Reference Add(
string bstrPath
)
Reference^ Add(
[InAttribute] String^ bstrPath
)
abstract Add :
bstrPath:string -> Reference
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 ファイルの参照を追加する場合の制限事項を参照してください。
戻り値
型: VSLangProj.Reference
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
.NET Framework セキュリティ
- 直前の呼び出し元に対する完全な信頼。 このメンバーは、部分的に信頼されているコードから使用することはできません。 詳細については、「部分信頼コードからのライブラリの使用」を参照してください。