我看到一个奇怪的问题,一旦程序集无法加载,它就不会从具有相同父进程的其他进程加载。 假设有Parent.exe首先创建Child1.exe并尝试使用
加载程序集Type.GetType("TypeName, AssemblyName1")
并且它失败,因为程序集不在探测路径中。我得到了预期的警告:
WRN:为程序集提供了部分绑定信息
但是当Parent.exe创建Child2.exe并且AssemblyName1在其探测路径中时,它仍然无法加载AssemblyName1。 Fusion日志显示它甚至没有尝试探测并提供错误消息
日志:之前看到过相同的绑定,并且hr =失败 0x80070002
我看到这个是因为Child1.exe和Child2.exe都是从Parent.exe创建的吗?
我很困惑。我理解加载上下文是在应用程序域中共享的,但我从未见过跨进程共享加载失败缓存。也许我误解了这个?