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();
 
                    
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号