2016-12-02 42 views
1

我在磊科新,我尝试使用此代码动态加载DLL:无法加载文件或程序集mscorlib

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)”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%" ] 
    } 
} 

有人能帮助我吗?

回答

1

SThis是一个非常普遍的问题。从.NET Core 1.1开始,无法加载为.NET Framework构建的库(它们基于mscorlib),但只能使用PCL构建的库。

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

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

相关问题