我正在实现一个支持插件的 ASP.NET MVC 4 应用程序,从今天起我有一个奇怪的行为,我不知道为什么:
我通过 Assembly.Load(path)
加载插件,这在几天前运行良好,但由于插件文件夹在 /bin
之外,影子复制不起作用而锁定了我的文件>.
因此,我使用了 Assembly.Load(File.ReadAllBytes(path))
也可以正常工作,但我认为这不是真正干净的代码,所以今天我将我的插件文件夹移到了 /bin
并切换回 Assembly.Load(path)
,但现在在执行我的代码时出现以下异常(在我的语言环境中进行翻译):
Could not load file or assembly "PATH_TO_MY_DLL" or one of its dependencies. The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047)
如果我切换回 Assembly.Load(File.ReadAllBytes(path))
它可以工作,但为什么当直接加载文件时它不再工作了?
最佳答案
我认为你改回来的时候犯了一个错误。
Assembly.Load(string name)
: 加载名为“name”的程序集。
你应该使用:
Assembly.LoadFile(path);
关于c# - 使用 Assembly.Load(path) 时找不到文件或程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14162650/