每个 .NET 应用程序都有依赖项。 即使是简单的 hello world 应用也依赖于 .NET 类库的某些部分。
了解 .NET 中的默认程序集加载逻辑有助于排查典型部署问题。
在某些应用程序中,依赖项在运行时动态确定。 在这些情况下,了解托管程序集和非托管依赖项的加载方式至关重要。
AssemblyLoadContext(程序集加载上下文)
API AssemblyLoadContext 是 .NET 加载设计的核心。 Understanding AssemblyLoadContext 文章提供了设计的概念性概述。
加载详细信息
加载算法详细信息在以下几篇文章中简要介绍:
使用插件创建应用
本教程 使用插件创建 .NET 应用程序 介绍了如何创建自定义 AssemblyLoadContext。 它使用一个 AssemblyDependencyResolver 来解析插件的依赖项。 本教程正确地将插件的依赖项与托管应用程序隔离开来。
程序集可卸载性
.NET 文章中的如何使用和调试程序集可卸载性是分步教程。 它演示如何加载 .NET 应用程序、执行它,然后卸载它。 本文还提供调试提示。
收集详细的程序集加载信息
收集详细的程序集加载信息文章介绍如何收集有关运行时中托管程序集加载的详细信息。 它使用 dotnet-trace 工具在正在运行的进程跟踪中捕获程序集加载事件。