次の方法で共有


Reference3.CopyLocal プロパティ

参照を local bin のパスにコピーするかどうかを取得または設定します。

名前空間:  VSLangProj80
アセンブリ:  VSLangProj80 (VSLangProj80.dll 内)

構文

'宣言
Property CopyLocal As Boolean
bool CopyLocal { get; set; }
property bool CopyLocal {
    bool get ();
    void set (bool value);
}
abstract CopyLocal : bool with get, set
function get CopyLocal () : boolean
function set CopyLocal (value : boolean)

プロパティ値

型 : System.Boolean
参照がコピーされるかどうかを示す boolean 値。

解説

実行時に、グローバル アセンブリ キャッシュまたはプロジェクトの出力パスのどちらかに参照が存在している必要があります。このプロパティに true を設定した場合、参照は実行時にプロジェクトの出力パスにコピーされます。

実行時に、アセンブリは、プロジェクトの出力パスまたはグローバル アセンブリ キャッシュ (「アセンブリとグローバル アセンブリ キャッシュの使用」を参照) のいずれかに存在している必要があります。どちらの場所にも存在しないオブジェクトへの参照がプロジェクトに含まれている場合は、プロジェクトをビルドするときに、その参照をプロジェクトの出力パスにコピーする必要があります。CopyLocal プロパティは、コピーを作成するかどうかを示します。値が true の場合、参照がコピーされます。false の場合、参照はコピーされません。

参照の変更を追跡してローカル コピーを更新するかどうかを判断するのは、共通言語ランタイムではありません。変更のトレースは、プロジェクト システムが行います。ユーザーが CopyLocal プロパティをオーバーライドしない限り、プロジェクト システムが必要に応じてプロパティの値を自動的に更新します。

プロジェクトが割り当てる CopyLocal プロパティの値は、次の順序で決定されます。

  1. 参照先が他のプロジェクトの場合 (プロジェクト間参照の場合) は、値を true に設定します。

  2. 参照が Visual Studio .NET Framework アセンブリの場合、この値は false です。

  3. 参照のアセンブリが、バージョン番号を除いて Visual Studio .NET Framework アセンブリの厳密な名前に一致する場合 (たとえば Visual Studio 2003 のアセンブリなど)、この値は false です。

  4. 参照のアセンブリが .NET Framework ディレクトリにある場合、この値は false です。

  5. 参照のアセンブリが GAC にある場合、この値は false です。

  6. それ以外の場合、値は true になります。

数値 4 の上は数値 3 ではないことに注意してください。なぜなら、.NET Framework SDK フォルダーは、.NET Framework ディレクトリと同じではないためです。

この例では、開いた Visual Basic または Visual C# プロジェクトに含まれるすべての参照について、CopyLocal 値を表示します。このサンプル コードをアドインとして実行するには、「方法 : オートメーション オブジェクト モデルのコード例をコンパイルおよび実行する」を参照してください。

Imports VSLangProj
Imports VSLangProj2
Imports VSLangProj80
Public Sub OnConnection(ByVal application As Object,_
 ByVal connectMode As ext_ConnectMode, ByVal addInInst As Object, _
 ByRef custom As Array) Implements IDTExtensibility2.OnConnection
    applicationObject = CType(application, DTE2)
    addInInstance = CType(addInInst, AddIn)
     DisplayCopyLocalValues(applicationObject)
End Sub
Public Sub DisplayCopyLocalValues(ByVal dte As DTE2)
    ' The first project is a Visual Basic or C# project.
    Dim vsProject As VSProject2 = _
    CType(applicationObject.Solution.Projects.Item(1).Object, _
    VSProject2)
    Dim aRef As Reference3
    Dim refStr As String
    refStr = ""
    For Each aRef In vsProject.References
        refStr += (aRef.Name & "'s CopyLocal value is:  " & _
        aRef.CopyLocal.ToString() & vbCr& vbCr)
    Next
    MsgBox(refStr)
End Sub
using System.Windows.Forms;
using VSLangProj;
using VSLangProj2;
using VSLangProj80;
public void OnConnection(object application, ext_ConnectMode
 connectMode, object addInInst, ref Array custom)
{
    applicationObject = (DTE2)application;
    addInInstance = (AddIn)addInInst;
    DisplayCopyLocalValues(((DTE2)applicationObject));
}
public void DisplayCopyLocalValues(DTE2 dte)
{
    // The first project is a Visual Basic or C# project.
    VSProject2 vsProject = 
((VSProject2)(applicationObject.Solution.Projects.Item(1).Object));
    Reference aRef = null;
    string refStr = null;
    refStr = "";
    foreach (VSLangProj80.Reference3 temp in vsProject.References)
    {
        aRef = temp;
        refStr += (aRef.Name + "'s CopyLocal value is:   " 
+ aRef.CopyLocal.ToString() + "\n" + "\n");
    }
    MessageBox.Show(refStr);
}

.NET Framework セキュリティ

  • 直前の呼び出し元に対する完全な信頼。このメンバーは、部分的に信頼されているコードから使用することはできません。詳細については、「部分信頼コードからのライブラリの使用」を参照してください。

参照

関連項目

Reference3 インターフェイス

CopyLocal オーバーロード

VSLangProj80 名前空間