System.Reflection.Assembly.LoadFile锁文件(System.Refl

2019-06-23 23:16发布

我在加载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