多次调用Assembly.Load的副作用

Joh*_*oDo 17 .net c# load assemblies

如果Assembly.Load多次呼叫会导致任何副作用吗?

例如

for (int i = 0; i < N; i++) 
{
   Assembly.Load(assemblyStrongName);
   // .......
}
Run Code Online (Sandbox Code Playgroud)

这一次装载组件不是吗?我已经检查过AppDomain.CurrentDomain.GetAssemblies()之前和之后它似乎已经加载一次(应该如此)但是它有副作用吗?

在长时间运行的服务器应用程序(运行数月/年而不重启)上面是否会导致任何问题?

Ree*_*sey 19

这一次装载组件不是吗?

是.程序集将加载到当前AppDomain中,并且只会加载到该AppDomain中一次.多次调用只会返回现有的程序集.

  • @JohnDoDo否 - 它应该只返回现有的Assembly.在AppDomain中加载程序集> 1次是不可能的,一旦加载,它将永远不会卸载(直到AppDomain关闭) (3认同)
  • 如果使用Assembly.Load(byte [] rawbytes)(字节而不是文件名作为参数),则在每次调用时,程序集都会添加到集合(AppDomain.GetAssemblies())中。 (2认同)