【问题标题】:Resolve dependecies when loading an assembly in .Net Core在 .Net Core 中加载程序集时解决依赖关系
【发布时间】:2018-04-27 03:48:09
【问题描述】:

我在 .net Core 中有一个项目,我需要将 Assembly(使用 Roslyn 编译)加载到沙箱,以隔离代码执行。

我的第一个技巧是使用 AppDomain,但这在 .net Core 中是不可能的。 因此,解决方案是使用 AssemblyLoadContext

以下代码是我的Assembly Loader

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;
    }
}

我这里的问题是Assembly加载后,Resolving方法没有被调用,依赖也没有被加载,导致我编译的代码不工作。 p>

是否有必要为调用ResolvingHandler做任何额外的步骤? 或者这在 Core 中是不可能的?

【问题讨论】:

标签: c# .net-core roslyn


【解决方案1】:

documentation 开始,它不是按设计调用的:

AssemblyLoadContext.Resolving 事件

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多