我在加载DLL
通过System.Reflection.Assembly.LoadFile
并反映在它的一个插件式的系统成员。 我需要能够更新/覆盖这些DLL
在系统运行一段时间,但它出现在调用后System.Reflection.Assembly.LoadFile
文件随后被锁定。
有谁知道的方式来解锁文件?
我看了一下在一个单独的AppDomain中加载文件? 是否有任何陷阱,以这种方式?
Answer 1:
如果使用这样的:
System.Reflection.Assembly.Load(System.IO.File.ReadAllBytes(path))
它不会锁定该文件。
编辑
虽然这个工作, 它是不是最好的解决办法 ,但这样做的更好的方法是很多更复杂(太多了就在这里粘贴所有它的代码)。
我创建了一个公共仓库在Github这里与适当做这一切的代码:
装载程序集,而不使用的卷影拷贝锁定。
Answer 2:
使用Microsoft.Cci包含在微软的FxCop
样品为1.35版本:
using Microsoft.Cci;
// [...]
AssemblyNode assembly = AssemblyNode.GetAssembly(path);
文章来源: System.Reflection.Assembly.LoadFile Locks File