我正在实现一个支持插件的ASP.NET MVC 4应用程序,因为今天我有一个奇怪的行为,我不知道为什么:
我通过Assembly.Load(path)
加载了插件,几天前工作正常,但由于插件文件夹在/bin
之外,因为阴影复制不起作用而锁定了我的文件。
因此,我使用Assembly.Load(File.ReadAllBytes(path))
也可以正常工作,但我认为这不是真正干净的代码,所以今天我将我的插件文件夹移到/bin
内并切换回Assembly.Load(path)
,但现在我在执行我的代码时得到以下异常(在我的语言环境中翻译):
无法加载文件或程序集" PATH_TO_MY_DLL"或其中一个依赖项。给定的程序集名称或代码库无效。 (来自HRESULT的异常:0x80131047)
如果我切换回Assembly.Load(File.ReadAllBytes(path))
它可以工作,但为什么在直接加载文件时它不起作用?
答案 0 :(得分:4)
我认为当你改回来时你犯了一个错误。
Assembly.Load(string name)
:加载名为“name”的程序集。
您应该使用:
Assembly.LoadFile(path);