Assembly nachladen

09/21/2015 13:08 Serraniel#1
EDIT: Problem hat sich geklärt.

Hallo zusammen,

ich arbeite derzeit an einem kleinem Programm, bei dem ich die benötigten DLLs nicht direkt mit ausliefere, sondern diese (wenn veraltet/nicht vorhanden) ins AppData runterlade. Laden tue ich diese per Event:
PHP Code:
AppDomain.CurrentDomain.AssemblyResolve += delegate (object senderResolveEventArgs args
    { 
        var 
assemblyName args.Name.Substring(0args.Name.IndexOf(',')); 

        return (
from file in fileList 
            select Assembly
.LoadFile(file
            
into assembly 
            let currAssemblyName 
assembly.FullName.Substring(0args.Name.IndexOf(',')) 
            
where assemblyName == currAssemblyName 
            select assembly
).FirstOrDefault();                    
    }; 
Für die, die mit LINQ nicht so dicke sind hier der Linq Teil als for:
PHP Code:
for (var 0fileList.Counti++)
{
    var 
assembly Assembly.LoadFile(fileList[i]);
    var 
curAssemblyName assembly.FullName.Substring(0args.Name.IndexOf(','));
                        
    if (
curAssemblyName == assemblyName)
        return 
assembly;

fileList ist eine List<string> mit allen DLL Dateipfaden:
[Only registered and activated users can see links. Click Here To Register...]

So sieht das Verzeichnis aus, wo die Dateien liegen:
[Only registered and activated users can see links. Click Here To Register...]

Das laden der DLLs hat wie bereits erwähnt problemlos funktioniert, nur die (aktuell letzte; Index 14 in der Liste) weigert sich und ich verstehe nicht wieso. Da scheint beim Laden irgendwas nicht zu klappen.
Wenn ich entsprechend davor folgende If-Abfrage mache:
PHP Code:
if (assemblyName == "Sweet Elitepvpers.MainApplication")
    return 
Assembly.LoadFile(fileList[14]); 
funktioniert das ganze wieder. Ich versteh jedoch nicht warum es mit der For Schleife nicht geht, das muss ja eigentlich genauso gehen.

Exception ist folgende:
[Only registered and activated users can see links. Click Here To Register...]
09/21/2015 18:33 tolio#2
Einfach mal die Exception im msdn nachschauen hilft warscheinlich weiter.

[Only registered and activated users can see links. Click Here To Register...]
Quote:
This exception is thrown when the file format of a dynamic link library (.dll file) or an executable (.exe file) doesn’t conform to the format that the common language runtime expects. In particular, the exception is thrown under the following conditions: [...]
09/21/2015 19:04 tolio#3
^ really?

ich wollte hier einen hinweis hinterlassen für andere leute die das selbe problem haben und mit der suche oder google diesen thread finden, aber trotzdem nice spam.
09/21/2015 21:45 Michi Biehler#4
Ich denke der Fehler liegt am Leerzeichen im Dateinamen der .dll Datei mit der Nummer 14 im Array.

Gruß,
Michi
09/21/2015 23:17 Serraniel#5
Ne, Leerzeichen ist egal, geht bei der anderen Assembly ja auch. War was spezifischer das Problem.