2013-04-04 4 views
2

J'ai une DLL qui peut avoir ou non son attribut ComVisible défini sur true. Je ne suis pas sûr comment il a été construit, ou avec quels attributs? Tout ce que je sais, c'est que c'est une DLL .Net. Tout simplement, comment puis-je savoir si c'est Com Visible?Comment puis-je savoir si une DLL est ComVisible?

Désolé, il s'agit d'un doublon. Toutes mes recherches sur ce résultat de retour montrent comment rendre une DLL ComVisible. Je sais comment faire ca.

+0

Il suffit de lancer Tlbexp.exe. Il va se plaindre quand il ne trouve aucun type qui soit [ComVisible]. –

Répondre

3

Vous pouvez vérifier la ComVisibleAttribute de l'assemblage en utilisant la réflexion:

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

Quelque chose comme ça?

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

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

Vous avez une erreur: 'Aucune surcharge pour la méthode 'GetCustomAttributes' prend 0 argument' – user2023861

Questions connexes