Reference3.CopyLocal 属性

获取或设置是否将引用复制到本地 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 2003 程序集)外,引用的程序集与 Visual Studio .NET Framework 程序集的强名称匹配,则该值为 false。

  4. 如果引用的程序集位于 .NET Framework 目录中,则该值为 false。

  5. 如果引用的程序集位于 GAC 中,则该值为 false。

  6. 否则,该值为 true。

注意,由于 .NET Framework SDK 文件夹与 .NET Framework 目录不同,因此上面的数字 4 与数字 3 也不同。

示例

此示例显示打开的 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 命名空间