我正在通过DLL
加载System.Reflection.Assembly.LoadFile
并在插件式系统中反映其成员。
我需要能够在系统运行时更新/覆盖这些DLL
但是在调用System.Reflection.Assembly.LoadFile
之后,该文件随后被锁定。
有谁知道解锁文件的方法?
我已阅读有关在单独的应用程序域中加载文件的信息?这种方法有什么缺陷吗?
答案 0 :(得分:67)
如果您使用此:
System.Reflection.Assembly.Load(System.IO.File.ReadAllBytes(path))
它不会锁定文件。
虽然这很有效,但并不是最好的解决方案,但是更好的方法就是涉及到更多(这里只是粘贴所有代码太多了)。
我在Github上创建了一个公共存储库,其中包含正确执行此操作的所有代码:
答案 1 :(得分:0)
使用Microsoft FxCop中包含的Microsoft.Cci
1.35版的示例:
using Microsoft.Cci;
// [...]
AssemblyNode assembly = AssemblyNode.GetAssembly(path);