C# 在.Net Core中加载程序集时解决依赖关系

C# 在.Net Core中加载程序集时解决依赖关系,c#,.net-core,roslyn,C#,.net Core,Roslyn,我在.NETCore中有一个项目,我需要将一个程序集(用Roslyn编译)加载到沙箱中,以便隔离代码执行 我的第一个想法是使用AppDomain,但这在.NETCore中是不可能的。 因此,解决方案是使用AssemblyLoadContext 以下代码是我的程序集加载器: 我这里的问题是在加载程序集之后,没有调用解析方法,也没有加载依赖项,这使得我编译的代码无法工作 是否需要对调用的ResolvingHandler执行任何其他步骤? 或者这在Core中是不可能的?因为它不是由设计调用的: Ass

我在.NETCore中有一个项目,我需要将一个程序集(用Roslyn编译)加载到沙箱中,以便隔离代码执行

我的第一个想法是使用AppDomain,但这在.NETCore中是不可能的。 因此,解决方案是使用AssemblyLoadContext

以下代码是我的程序集加载器:

我这里的问题是在加载程序集之后,没有调用解析方法,也没有加载依赖项,这使得我编译的代码无法工作

是否需要对调用的ResolvingHandler执行任何其他步骤? 或者这在Core中是不可能的?

因为它不是由设计调用的:

AssemblyLoadContext.Resolving事件

尝试加载到此程序集加载上下文时,当程序集解析失败时发生


我强烈建议您查看本文中详细介绍的汇编解析器查看这个问题,并给出大量答案:
public class AssemblyContext : AssemblyLoadContext
{
    public Assembly Load(Stream stream)
    {
        this.Resolving += ResolvingHandler;
        return this.LoadFromStream(stream);
    }

    public Assembly ResolvingHandler(AssemblyLoadContext context, AssemblyName assemblyName)
    {
        var assembly = context.LoadFromAssemblyName(assemblyName);
        Console.WriteLine("Resolving: " + assemblyName.FullName);
        return assembly;
    }
}