System.Reflection.Assembly.LoadFile锁定文件

时间:2009-06-23 08:59:11

标签: asp.net reflection plugins

我正在通过DLL加载System.Reflection.Assembly.LoadFile并在插件式系统中反映其成员。 我需要能够在系统运行时更新/覆盖这些DLL但是在调用System.Reflection.Assembly.LoadFile之后,该文件随后被锁定。 有谁知道解锁文件的方法?
我已阅读有关在单独的应用程序域中加载文件的信息?这种方法有什么缺陷吗?

2 个答案:

答案 0 :(得分:67)

如果您使用此:

 System.Reflection.Assembly.Load(System.IO.File.ReadAllBytes(path))

它不会锁定文件。

修改


虽然这很有效,但并不是最好的解决方案,但是更好的方法就是涉及到更多(这里只是粘贴所有代码太多了)。

我在Github上创建了一个公共存储库,其中包含正确执行此操作的所有代码:

Loading Assemblies without Locking by using Shadow Copying.

答案 1 :(得分:0)

使用Microsoft FxCop中包含的Microsoft.Cci

1.35版的示例:

using Microsoft.Cci;
// [...]
AssemblyNode assembly = AssemblyNode.GetAssembly(path);