2013-04-04 1 views
2

У меня есть DLL, которая может иметь или не иметь атрибут ComVisible для true. Я не уверен, как он был построен или с какими атрибутами? Все, что я знаю, это DLL .Net. Проще говоря, как я могу определить, является ли это Com Visible?Как определить, является ли DLL совместимой?

Извините, если это дубликат. Все мои запросы об этих результатах возвращения показывают, как сделать DLL ComVisible. Я знаю, как это сделать.

+0

Просто запустите Tlbexp.exe. Он будет жаловаться, когда он не найдет какие-либо типы, которые являются [ComVisible]. –

ответ

3

Вы можете проверить ComVisibleAttribute сборки с помощью отражения:

private static bool IsComVisible(string assemblyPath) 
{ 
    var assembly = Assembly.LoadFile(assemblyPath); 

    var attributes = assembly.GetCustomAttributes(typeof(ComVisibleAttribute), false); 

    if (attributes.Length > 0) 
    { 
    return ((ComVisibleAttribute)attributes[0]).Value; 
    } 

    return false; 
} 
0

Что-то вроде этого?

Assembly asm = Assembly.GetExecutingAssembly(); //Assembly.LoadFile, Assembly.Load 

bool comVisible = asm.GetCustomAttributes() 
        .OfType<ComVisibleAttribute>() 
        .First() 
        .Value; 
+0

Получил ошибку: 'Нет перегрузки для метода 'GetCustomAttributes' принимает 0 аргументов' – user2023861

 Смежные вопросы

  • Нет связанных вопросов^_^