2016-12-02 6 views
1

Je suis nouveau dans NETCORE et j'essaie de charger une dll dynamique avec ce code:Impossible de charger le fichier ou l'assemblage 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; 
    } 
} 

Quand j'appelle méthode asm.GetType une exception est levée:

"Impossible de charger le fichier ou l'assemblage 'mscorlib, Version = 4.0.0.0, Culture = neutre, PublicKeyToken = b77a5c561934e089' Une opération n'est pas légale dans l'état actuel. (Exception de HRESULT: 0x80131509)" Source: System. Private.CoreLib

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

quelqu'un peut me aider?

Répondre

1

STest un problème très commun. À partir de .NET Core 1.1, vous ne pouvez pas charger les bibliothèques construites pour le .NET Framework (elles sont basées sur mscorlib) mais seulement celles qui sont construites en utilisant PCL.

Vérifiez l'assemblage que vous essayez de charger.

.NET Core 2.0 abordera ce sujet.