无法加载文件或程序集 mscorlib

Could not load file or assembly mscorlib

我是 NetCore 的新手,我尝试使用以下代码动态加载 dll:

public void LoadDll()
{
    try
    {
        var dllPath = @"C:\Temp\dynamic.dll";

        var asl = new AssemblyLoader();
        var asm = asl.LoadFromAssemblyPath(dllPath);

        var type = asm.GetType("MyNamespace.MyClass");
        dynamicInstance = Activator.CreateInstance(type);
    }
    catch (Exception ex)
    {

    }
}

public class AssemblyLoader : AssemblyLoadContext
{
    // Not exactly sure about this
    protected override Assembly Load(AssemblyName assemblyName)
    {
        var deps = DependencyContext.Default;
        var res = deps.CompileLibraries.Where(d => d.Name.Contains(assemblyName.Name)).ToList();
        var assembly = Assembly.Load(new AssemblyName(res.First().Name));
        return assembly;
    }
}

当我调用 asm.GetType 方法时抛出异常:

"Could not load file or assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. An operation is not legal in the current state. (Exception from HRESULT: 0x80131509)" Source : System.Private.CoreLib

这是我的project.json:

{
    "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.1",
      "type": "platform"
    },
    "Microsoft.ApplicationInsights.AspNetCore": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.1",
    "Microsoft.AspNetCore.Routing": "1.0.1",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
    "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0",
    "Microsoft.Extensions.Configuration.Json": "1.0.0",
    "Microsoft.Extensions.Logging": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Logging.Debug": "1.0.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0" 
    },

    "tools": {
      "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
    },

    "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
        ]
      }
    },

    "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
    },

    "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
      }
    },

    "publishOptions": {
    "include": [
      "wwwroot",
      "**/*.cshtml",
      "appsettings.json",
      "web.config"
      ]
    },

    "scripts": {
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
    }
}

有人可以帮助我吗?

S这是一个很常见的问题。从 .NET Core 1.1 开始,您无法加载为 .NET Framework 构建的库(它们基于 mscorlib),只能加载使用 PCL.

构建的库

检查您尝试加载的程序集。

.NET Core 2.0 将解决这个问题。