【问题标题】:Could not load file or assembly mscorlib无法加载文件或程序集 mscorlib
【发布时间】:2016-12-02 09:47:19
【问题描述】:

我是 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 方法时会抛出异常:

“无法加载文件或程序集 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'。当前状态下的操作不合法。(来自 HRESULT 的异常:0x80131509)”来源:系统。 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%" ]
    }
}

有人可以帮我吗?

【问题讨论】:

    标签: dll .net-core mscorlib


    【解决方案1】:

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

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

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

    【讨论】:

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