【发布时间】:2021-09-24 08:26:57
【问题描述】:
我正在尝试编写一个应用程序来加载程序集并列出它再次依赖的程序集。这部分使用 Assembly.LoadFrom(asmPath) 和 GetReferencedAssemblies() 可以正常工作。
我还想从 dll 中提取一些公共信息。 主要是我想找到实现某些标签(通常是 Microsoft.AspNetCore.Mvc.ApiControllerAttribute)的类以及这些函数具有的参数。 当我尝试调用 asm.GetTypes() 时,我收到 ReflectionTypeLoadException,因为 Microsoft.AspNetCore.Mvc.Core 未加载。
有没有办法使用引用的程序集加载 Microsoft.AspNetCore.Mvc.Core?我正在尝试对很多 dll 执行此操作,因此无法在我的“程序集检查程序”中为所有引用添加 nuget 引用。或者有没有更好的方法来获取我正在寻找的信息?
【问题讨论】:
-
你可能很幸运能够逃脱
Assembly.Load(AssemblyName)即强制应用程序从目录加载程序集,尽管这充满了问题。 -
给出同样的错误
-
前提还是一样,你反映的dll依赖于程序集,这些程序集可以位于任何地方,但通常(不总是)在原始程序集所在的目录中) ,如果您可以加载所需的程序集,问题应该会消失...您是否检查过 Microsoft.AspNetCore.Mvc.Core 在加载后实际上已加载?
-
Microsoft.AspNetCore.Mvc.Core 不在文件夹中,它被编译到 dll 中或以不同的方式引用
标签: c# reflection