Reference3 Интерфейс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Расширяет интерфейс Reference2 пространства имен VSLangProj2.
public interface class Reference3 : VSLangProj2::Reference2
public interface class Reference3 : VSLangProj2::Reference2
__interface Reference3 : VSLangProj2::Reference2
[System.Runtime.InteropServices.Guid("5021602E-2025-4299-88D2-0A92E8B41ADF")]
[System.Runtime.InteropServices.TypeLibType(4160)]
public interface Reference3 : VSLangProj2.Reference2
[<System.Runtime.InteropServices.Guid("5021602E-2025-4299-88D2-0A92E8B41ADF")>]
[<System.Runtime.InteropServices.TypeLibType(4160)>]
type Reference3 = interface
interface Reference2
Public Interface Reference3
Implements Reference2
- Производный
- Атрибуты
- Реализации
Примеры
В следующем примере добавляются две ссылки на открытый Visual Basic или Visual C# проект. Затем он вызывает функцию Жетрефтипенаме для вывода ссылочного типа и вызывает функцию Репортреференцес для вывода дополнительных свойств ссылки. Чтобы запустить этот пример в качестве надстройки, см. статью как скомпилировать и запустить примеры кода объектной модели автоматизации.
Пути по умолчанию для добавленных ссылок: <installation root> \Program Филес\микрософт.нет\примари Interop сборки для adodb.dll и <installation root> \Program Files\Common филес\спиченгинес\микрософт для spcommon.dll. Замените <file path> в примере этими или другими соответствующими путями к файлам.
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)
AddNewReference(applicationObject)
End Sub
Sub AddNewReference(ByVal dte As DTE2)
Dim aProject As Project
Dim aVSProject As VSProject2
aProject = applicationObject.Solution.Projects.Item(1)
aVSProject =_
CType(applicationObject.Solution.Projects.Item(1).Object, VSProject2)
' Add an Assembly reference and display its type and additional
' information.
Dim newRef As Reference3
' Replace <file path> with an actual path.
newRef = aVSProject.References.Add("<file path>\adodb.dll")
MsgBox("The " & newRef.Name() & " added, is of type:" & vbCr _
& GetRefTypeName(newRef))
MsgBox("A report on " & newRef.Name() & ":" & vbCr & _
ReportReferences(newRef))
' Add a COM reference and display its type and a report.
' Replace <file path> with an actual path.
newRef = aVSProject.References.Add("<file path>\spcommon.dll")
MsgBox("The " & newRef.Name() & " added, is of type:" & vbCr _
& GetRefTypeName(newRef))
MsgBox("A report on " & newRef.Name() & ":" & vbCr & _
ReportReferences(newRef))
End Sub
Private Function GetRefTypeName(ByVal ref As Reference3) _
As String
Dim type As String
Select Case ref.Type
Case prjReferenceType.prjReferenceTypeActiveX
type = "COM"
Case prjReferenceType.prjReferenceTypeAssembly
type = "Assembly"
End Select
Return type
End Function
Function ReportReferences(ByVal aRef As Reference3) As String
Dim report As String = ""
Dim type As String
' Each entry in the ArrayList contains a label and a value.
Dim ht As System.Collections.ArrayList = _
New System.Collections.ArrayList
With aRef
ht.Add(New String() {"Name", .Name})
ht.Add(New String() {"Description", .Description})
ht.Add(New String() {"Version", -
String.Format("{0}.{1}.{2}.{3}", _
.MajorVersion, .MinorVersion, .BuildNumber, .RevisionNumber)})
ht.Add(New String() {"Location", .ContainingProject.FullName})
Select Case .Type
Case prjReferenceType.prjReferenceTypeActiveX
type = "COM"
Case prjReferenceType.prjReferenceTypeAssembly
type = "Assembly"
End Select
ht.Add(New String() {"Type", type})
ht.Add(New String() {"Culture", .Culture})
End With
Dim datas() As String
For Each datas In ht
report &= datas(0) & ControlChars.Tab & datas(1) & _
ControlChars.CrLf
Next
Return report
End Function
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;
AddNewReference(((DTE2)applicationObject));
}
public void AddNewReference(DTE2 dte)
{
Project aProject = null;
VSProject2 aVSProject = null;
aProject = applicationObject.Solution.Projects.Item(1);
aVSProject =
((VSProject2)(applicationObject.Solution.Projects.Item(1).Object));
// Add an Assembly reference and display its type and a report.
Reference3 newRef = null;
// Replace <file path> with an actual file path.
newRef = ((Reference3)(aVSProject.References.Add(@"
<file path>\adodb.dll")));
MessageBox.Show("The " + newRef.Name + " added, is of type:"
+ "\n" + GetRefTypeName(newRef));
MessageBox.Show("A report on " + newRef.Name + ":" + "\n"
+ ReportReferences(newRef));
// Add a COM reference and display its type and a report.
// Replace <file path> with an actual file path.
newRef = ((Reference3)(aVSProject.References.Add(@"
<file path>\spcommon.dll")));
MessageBox.Show("The " + newRef.Name + " added, is of type:"
+ "\n" + GetRefTypeName(newRef));
MessageBox.Show("A report on " + newRef.Name + ":" + "\n"
+ ReportReferences(newRef));
}
private string GetRefTypeName(Reference3 refIdent)
{
string type = null;
switch (refIdent.Type)
{
case prjReferenceType.prjReferenceTypeActiveX:
type = "COM";
break;
case prjReferenceType.prjReferenceTypeAssembly:
type = "Assembly";
break;
}
return type;
}
public string ReportReferences(Reference3 aRef)
{
string report = "";
string type = null;
// Each entry in the ArrayList contains a label and a value.
System.Collections.ArrayList ht =
new System.Collections.ArrayList();
VSLangProj.Reference temp = aRef;
ht.Add(new string[] { "Name", temp.Name });
ht.Add(new string[] { "Description", temp.Description });
ht.Add(new string[] { "Version", string.Format("{0}.{1}.{2}.{3}"
, temp.MajorVersion, temp.MinorVersion,
temp.BuildNumber, temp.RevisionNumber) });
ht.Add(new string[] { "Location",
temp.ContainingProject.FullName });
switch (temp.Type)
{
case prjReferenceType.prjReferenceTypeActiveX:
type = "COM";
break;
case prjReferenceType.prjReferenceTypeAssembly:
type = "Assembly";
break;
}
ht.Add(new string[] { "Type", type });
ht.Add(new string[] { "Culture", temp.Culture });
string[] datas = null;
foreach (string[] temp1 in ht)
{
datas = temp1;
report += datas[0] + "\t" + datas[1] + "\n";
}
return report;
}
Комментарии
Reference3 определяет следующие новые параметры:
Свойства
| Aliases |
Получает или задает псевдонимы для указанной ссылки. Это свойство применимо только к Visual C#. |
| AutoReferenced |
Получает значение, указывающее, сделана ли ссылка компилятором автоматически. |
| BuildNumber |
Получает номер построения ссылки. |
| Collection |
Возвращает коллекцию объектов References. |
| ContainingProject |
Получает объект Project, содержащий ссылку. |
| CopyLocal |
Получает или задает значение, указывающее, копируется ли ссылка в локальную папку Bin. |
| Culture |
Получает строку языка и региональных параметров ссылки. |
| Description |
Получает текстовое описание ссылки. |
| DTE |
Возвращает объект расширения верхнего уровня. |
| Extender[String] |
Только для внутреннего применения корпорацией Майкрософт. |
| ExtenderCATID |
Только для внутреннего применения корпорацией Майкрософт. |
| ExtenderNames |
Только для внутреннего применения корпорацией Майкрософт. |
| Identity |
Возвращает уникальный идентификатор ссылки. |
| Isolated |
Получает или задает значение, указывающее, является ли ссылка COM изолированной, т. е. не зарегистрированной в Windows. |
| MajorVersion |
Получает основной номер версии ссылки. |
| MinorVersion |
Получает дополнительный номер версии ссылки. |
| Name |
Возвращает имя объекта. |
| Path |
Получает путь к файлу ссылки. |
| PublicKeyToken |
Получает токен открытого ключа из строго подписанной ссылки. |
| RefType |
Получает тип ссылки: сборка, COM или собственная ссылка. |
| Resolved |
Получает значение, указывающее, была ли разрешена текущая ссылка. |
| RevisionNumber |
Получает номер редакции ссылки. |
| RuntimeVersion |
Получает версию среды выполнения, в которой собрана ссылка. Это применимо только к ссылкам .NET. |
| SourceProject |
Получает объект Project, если ссылка является проектом. В противном случае возвращается Nothing (объект null). |
| SpecificVersion |
Получает или задает значение, указывающее, используется ли только определенная версия ссылки. |
| StrongName |
Получает значение, указывающее, подписана ли ссылка парой открытого и закрытого ключа. |
| SubType |
Задает или получает подтип сборки. |
| Type |
Является устаревшей. Реализовано исключительно для обратной совместимости. Используйте вместо этого RefType. |
| Version |
Получает версию указанной ссылки. |
Методы
| Remove() |
Удаляет ссылку из объекта References, в котором она содержится. |