【发布时间】:2011-04-15 16:09:22
【问题描述】:
所以情况如下:
我有一个名为 Lib1.dll 的程序集。由于某种原因(与问题无关),我不得不将程序集文件名重命名为 Lib1New.dll,现在在尝试使用 Assembly.LoadFile 加载重命名的程序集时,我注意到 CLR 也尝试加载 Lib1.dll。
如果在搜索路径中找到 Lib1.dll,它将被加载到地址空间中。无论是否找到 Lib1.dll,该应用程序都可以正常工作。 (问题是如果找到 Lib1.dll 文件会被锁定,其他进程无法删除)。
我不明白为什么 LoadFile 会搜索并加载 Lib1.dll。 LoadFile应该是在指定位置加载程序集文件的内容,为什么要搜索文件。
LoadFile 的 MSDN 文档:
使用 LoadFile 方法加载和检查具有相同标识但位于不同路径的程序集。 LoadFile 不会将文件加载到 LoadFrom 上下文中,也不会像 LoadFrom 方法那样使用加载路径解析依赖关系。 LoadFile 在这种有限的场景中很有用,因为 LoadFrom 不能用于加载具有相同身份但不同路径的程序集;它只会加载第一个这样的程序集。
【问题讨论】:
标签: c# file-io clr .net-assembly