GetCustomAttribute方法获取特性在运行时返回 null NET6

Assembly.LoadFile 无法获取自定义的Attribute特性

 

调用失败原因

根本原因是对Assembly.LoadFile的调用。此方法总是将指定的程序集加载到自己的AssemblyLoadContext中。(有关程序集加载上下文的更多信息)。

这意味着将程序集加载到LoadFile加载上下文(一个副本)中,而我从主代码中直接引用它,它将加载到默认加载上下文(第二个副本)中。虽然程序集文件完全相同,但对于运行时,这两个副本是不同的程序集,来自这两个副本的所有类型都将被视为不同的类型。

将程序集加载方法更改为: 

Assembly.GetAssembly(typeof(MyType));

解决了这个问题。

 

1方案 改用 Assembly.LoadForm 

 2方案 改用 Assembly.Load

 

3 方案 改用获取程序集: 

Assembly[] ass=AppDomain.CurrentDomain.GetAssemblies();

 

 


posted @ 2025-06-09 16:37  JohnnyLei  阅读(14)  评论(0)    收藏  举报