清除.Net Reflection缓存

时间:2010-02-16 16:14:08

标签: c# reflection typeloadexception

在动态编译C#源代码时,如果我们碰巧尝试执行缺少引用的已编译目标DLL(例如tmp901.tmp.dll),例如:

InnerException:无法加载文件或程序集“_O2_Scanner_MsCatNet,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null”或其中一个依赖项。

似乎存在一个问题,即在该进程的持续时间内,即使将文件复制到正在执行目标程序集(tmp901.tmp.dll)的位置,也永远不会解析该程序集。似乎有一个缓存问题正在阻止dll存在的重新检查。

目前的解决方案是重启主机.NET应用程序,这实际上并不实用。

1 个答案:

答案 0 :(得分:0)

装配加载失败后,我相信您仍然可以使用Assembly.LoadAssembly.LoadFile手动加载装配。这应该允许您强制加载程序集,即使它已经失败一次。