Поделиться через


Reference3.CopyLocal - свойство

Получает или задает значение, указывающее, копируется ли ссылка в локальную папку Bin.

Пространство имен:  VSLangProj80
Сборка:  VSLangProj80 (в VSLangProj80.dll)

Синтаксис

'Декларация
Property CopyLocal As Boolean
    Get
    Set
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, указывающее, копируется ли ссылка.

Реализации

Reference2.CopyLocal

Заметки

Во время выполнения ссылка должна существовать либо в глобальном кэше сборки, либо в папке выходных данных проекта. Если это свойство имеет значение true, то во время выполнения ссылка копируется в папку выходных данных проекта.

Во время выполнения сборки должны находиться либо в папке выходных файлов проекта, либо в глобальном кэше сборок (см. раздел Работа со сборками и глобальным кэшем сборок). Если проект содержит ссылку на объект, не находящийся ни в одном из этих расположений, то после построения проекта ссылка должна быть скопирована в выходной путь проекта. Свойство CopyLocal указывает, нужно ли копировать эту ссылку. Если свойство имеет значение true, ссылка копируется. Если свойство имеет значение false, ссылка не копируется.

Среда CLR не отслеживает изменения, происходящие со ссылкой, чтобы определить, нужно ли обновлять локальную копию. Изменения отслеживаются в системе проекта. Пока пользователь не переопределит свойство CopyLocal, при необходимости значение будет автоматически обновлено системой проекта.

Задаваемое в проекте значение свойства CopyLocal определяется в следующем порядке:

  1. Если это ссылка на другой проект, называемая ссылкой между проектами, то свойство имеет значение true.

  2. Если ссылка является сборкой .NET Framework Visual Studio, то значение — false.

  3. Если сборка ссылки соответствует строгому имени сборки .NET Framework Visual Studio кроме номера версии (как, например, сборки Visual Studio 2003), то значение — false.

  4. Если сборка ссылки находится в каталоге .NET Framework, то значение — false.

  5. Если сборка ссылки находится в глобальном кэше сборок, то значение — false.

  6. В противном случае — true.

Обратите внимание, что номер 4 из примера выше не совпадает с номером 3, поскольку папка пакета SDK .NET Framework — не каталог .NET Framework.

Примеры

В данном примере выводятся значения CopyLocal для всех ссылок открытого проекта Visual Basic или Visual C#. О том, как выполнить этот пример в качестве надстройки, см. в разделе Практическое руководство. Компиляция и выполнение примеров кода модели объектов автоматизации.

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 - пространство имен