AssemblyLoadContext.LoadFromAssemblyPath和Assembly.Load
时间: 2024-11-20 14:28:00 浏览: 26
`AssemblyLoadContext.LoadFromAssemblyPath` 是 `AssemblyLoadContext` 类的一个静态方法,用于从指定的路径动态加载程序集。这个方法允许你在特定的上下文中加载不在已注册 GAC(全局应用程序缓存)或默认路径下的程序集[^1]。
相比之下,`Assembly.Load` 方法则是传统的加载方式,它直接根据给定的名称或其他元数据尝试加载一个已知的程序集。这种方法并不支持热部署或隔离加载,因为它是基于预先定义的命名空间或文件路径来查找和加载程序集的。
`AssemblyLoadContext.Load` 并非实际存在,而是可以理解为你可能想要使用的 `LoadFromAssemblyPath` 的一种扩展,如果在具有 `AssemblyLoadContext` 的环境中,你可以通过创建一个新的 `AssemblyLoadContext` 实例并调用它的 `LoadFromAssemblyPath` 来实现更细粒度的控制和隔离。
举个例子:
```csharp
using System.Reflection;
// 创建新的 AssemblyLoadContext
var context = new AssemblyLoadContext("MyCustomContext");
// 使用 LoadFromAssemblyPath 加载程序集
context.LoadFromAssemblyPath(@"C:\path\to\myassembly.dll");
```
这会使得在 `MyCustomContext` 中加载该程序集,而不会影响其他默认或独立的加载上下文。
阅读全文