我有一个可能或可能没有将其ComVisible属性设置为true的DLL。我不确定它是如何构建的,或者具有什么属性?我只知道它是一个.Net DLL。简而言之,我怎么知道它是否可见?如何判断一个DLL是否是ComVisible?
对不起,如果这是重复的。我所有关于此返回的搜索结果都显示如何使成为一个DLL ComVisible。我知道该怎么做。
我有一个可能或可能没有将其ComVisible属性设置为true的DLL。我不确定它是如何构建的,或者具有什么属性?我只知道它是一个.Net DLL。简而言之,我怎么知道它是否可见?如何判断一个DLL是否是ComVisible?
对不起,如果这是重复的。我所有关于此返回的搜索结果都显示如何使成为一个DLL ComVisible。我知道该怎么做。
你可以使用反射检查装配的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;
}
像这样的东西?
Assembly asm = Assembly.GetExecutingAssembly(); //Assembly.LoadFile, Assembly.Load
bool comVisible = asm.GetCustomAttributes()
.OfType<ComVisibleAttribute>()
.First()
.Value;
出现错误:'方法'GetCustomAttributes'没有重载需要0个参数' – user2023861 2013-04-05 13:02:13
只要运行Tlbexp.exe。当它找不到任何类型的[ComVisible]时,它会发出抱怨。 – 2013-04-04 21:30:35