2016-12-02 5 views
1

내가 NetCore에 새로 온 사람을로드 할 수 없습니다 나는이 코드를 동적으로 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의 방법 A 예외가 발생합니다 :

"mscorlib, 버전 = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089 '파일 또는 어셈블리를로드 할 수 없습니다. 현재 상태에서 작동이 유효하지 않습니다 (HRESULT의 예외 : 0x80131509)"원본 : System. Private.CoreLib

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

누군가가 나를 도울 수 있습니다 : 여기

내 project.json입니까?

답변

1

이 문제는 매우 일반적인 문제입니다. .NET Core 1.1부터는 .NET Framework 용 라이브러리 (mscorlib 기반)는로드 할 수 없지만 PCL을 사용하여 빌드 한 라이브러리 만로드 할 수 있습니다.

로드하려고하는 어셈블리를 확인하십시오.

.NET Core 2.0에서는이 주제를 다룹니다.