Программный доступ к свойству «Вставить типы взаимодействия» в ссылку на проект - PullRequest
0 голосов
/ 25 сентября 2010

Я пишу плагин для Visual Studio, я могу видеть все свойства всех ссылок для проекта, кроме одного свойства.

Как получить доступ к свойству «Встраивать типы взаимодействия»программной ссылки?

Прямо сейчас я использую класс VSLangProj80.Reference3 для получения свойств, но он не включает свойство «Встраивать типы взаимодействия».

Я нашел ссылкув перечисление внутреннего использования Microsoft, VsProjReferencePropId100.DISPID_Reference_EmbedInteropTypes, но не знаете, как использовать его для поиска искомой информации.

1 Ответ

1 голос
/ 21 мая 2011

После долгих проб и ошибок я наконец заработал.Этот URL указал мне правильное направление.

Короче.VsLangProj100.dll не включает интерфейс Reference4, новый интерфейс, который должен содержать свойство EmbedInteropTypes.Решение состоит в том, чтобы сделать интерфейс самостоятельно.Для этого вам необходимо знать GUID интерфейса, свойства, спецификаторы доступа и идентификаторы отправки.Вы можете проверить это с помощью OLE / COM Object Viewer.

Интерфейс должен выглядеть следующим образом, и все отлично работает:

[Guid("F71B6036-80F1-4F08-BC59-B5D92865F629")]
public interface Reference4
{        
    // Reference        
    [DispId(1)] DTE DTE { get; }        
    [DispId(2)] References Collection { get; }        
    [DispId(3)] Project ContainingProject { get; }        
    [DispId(4)] void Remove();        
    [DispId(5)] string Name { get; }        
    [DispId(6)] prjReferenceType Type { get; }        
    [DispId(7)] string Identity { get; }        
    [DispId(8)] string Path { get; }        
    [DispId(9)] string Description { get; }        
    [DispId(10)] string Culture { get; }        
    [DispId(11)] int MajorVersion { get; }        
    [DispId(12)] int MinorVersion { get; }        
    [DispId(13)] int RevisionNumber { get; }        
    [DispId(14)] int BuildNumber { get; }        
    [DispId(15)] bool StrongName { get; }       
    [DispId(16)] Project SourceProject { get; }        
    [DispId(17)] bool CopyLocal { get; set; }        
    [DispId(18), TypeLibFunc(1088)] dynamic get_Extender(string ExtenderName);        
    [DispId(19)] dynamic ExtenderNames { get; }        
    [DispId(20)] string ExtenderCATID { get; }        
    [DispId(21)] string PublicKeyToken { get; }        
    [DispId(22)] string Version { get; }         
    // Reference2        
    [DispId(100)]string RuntimeVersion { get; }         
    // Reference3       
    [DispId(120)] bool SpecificVersion { get; set; }        
    [DispId(121)] string SubType { get; set; }        
    [DispId(122)] bool Isolated { get; set; }       
    [DispId(123)] string Aliases { get; set; }        
    [DispId(124)] uint RefType { get; }       
    [DispId(125)] bool AutoReferenced { get; }     
    [DispId(126)] bool Resolved { get; }        
    // Reference4       
    [DispId(127)] bool EmbedInteropTypes { get; set; }    
}

Gr

Martijn B

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...