| 

.NET C# Java Javascript Exception

4
Hallo zusammen,

es ist ja ganz normal möglich eine .NET 1.0 DLL auch in einen .NET 4 Prozess zu laden. Das habe ich z.B. mit log4net für .NET 1.0 und auch 1.1 gemacht.

Dabei möchte ich aber eigentlich nicht die DLL verwenden, sondern analysiere diese nur mittels Reflection. Um Abhängigkeiten aufzulösen habe ich ReflectionOnlyAssemblyResolve registriert:

static Assembly CurrentDomain_ReflectionOnlyAssemblyResolve(object sender, ResolveEventArgs args)
{
var asmName = new AssemblyName(args.Name);

try
{
return Assembly.ReflectionOnlyLoad(args.Name);
}
catch (Exception exc)
{
Trace.TraceInformation("could not resolve assembly " + args.Name);

try
{
return Assembly.ReflectionOnlyLoadFrom(Path.Combine(Path.GetDirectoryName(args.RequestingAssembly.Location), asmName.Name + ".dll"));
}
catch (Exception exc2)
{
Trace.TraceError("could not resolve assembly either with assembly or file name " + args.Name);

return null;
}
}
}


Jetzt hängt aber z.B. log4net 1.0 von System.Data in Version 1.0 ab. Dies gibt es aber überhaupt nicht auf meinem Rechner (unter Win8) oder doch? Muss ich dann doch .NET 1.0 / 1.1. installieren, um die Klasse in log4net zu laden, die System.Data verwendet? Geht das überhaupt?

Ich habe mir überlegt, dass es mir für meine Analyse egal ist, ob der Typ System.Data V1 oder V4 referenziert und habe versucht die Versionsinformation aus dem Assembly-Name zu löschen und dann noch einmal zu Laden, aber auch das führt zur Exception.

Ich habe so das dumme Gefühl, dass dies einfach nicht geht.
Der .NET 4 Prozess analysiert normalerweise .NET 4 oder 3.5 Assemblies, aber es wäre ganz nett wenn er auch eine 1.0er und 1.1er DLL scannen könnte.
16.06.2013
kleffel 654 1 9
TOP TECHNOLOGIES CONSULTING GmbH