2013-04-04 90 views
2

我有一个可能或可能没有将其ComVisible属性设置为true的DLL。我不确定它是如何构建的,或者具有什么属性?我只知道它是一个.Net DLL。简而言之,我怎么知道它是否可见?如何判断一个DLL是否是ComVisible?

对不起,如果这是重复的。我所有关于此返回的搜索结果都显示如何使成为一个DLL ComVisible。我知道该怎么做。

+0

只要运行Tlbexp.exe。当它找不到任何类型的[ComVisible]时,它会发出抱怨。 – 2013-04-04 21:30:35

回答

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 2013-04-05 13:02:13