我已经使用ILMerge合并了一个本身与Castle.DynamicProxy合并的辅助程序集,并将大多数(如果不是全部)正常公开的Castle类型设置为内部。当我使用依赖于Castle类型的辅助程序集中的代码时,我得到一个TypeLoadException,表示访问被拒绝。
检查的第一步是我的合并程序集仍然为DynamicProxy2程序集设置了InternalsVisibleTo属性。有什么方法可以检查吗?
答案 0 :(得分:2)
假设您可以加载程序集本身,可以使用Assembly.GetCustomAttributes
:
var asm = ...;
var internals = asm.GetCustomAttributes(typeof(InternalsVisibleToAttribute),
false);
var foundDynamicProxy2 = internals.Cast<InternalsVisibleToAttribute>()
.Any(x => x.AssemblyName == "DynamicProxy2");
答案 1 :(得分:2)