Forum: .Net Allgemein |
Thema:
AW: AW: DeSerialisierungs Problem beim wechsel zu "strong name" Anwendung (Hiiilfe!!) |
Von:
Sven Kuehne (
16.03.2009 16:08) |
Ich hatte das Problem nach einiger Recherche noch gelöst.
Für alle mit ähnlichen Problemen hier mein Ansatz:
System.Reflection.Assembly CurrentDomain_AssemblyResolve(
object sender, ResolveEventArgs args)
{
string simpleName = args.Name;
if (args.Name.Contains("="))
{
try
{
// args.Name looks like this:
// "<AssemblyName>, Version=<major>.<minor>.<build>.<revison>,
// Culture=neutral, PublicKeyToken=<16 hexit number>"
// We need to parse it to extract the version number and the simple name
// Don't look for "Version" it may vary by locale
string versionStr = args.Name.Substring(
args.Name.IndexOf("=", StringComparison.Ordinal) + 1);
versionStr = versionStr.Substring(
0, versionStr.IndexOf(",", StringComparison.Ordinal));
simpleName = args.Name.Substring(
0, args.Name.IndexOf(','));
// Load the assembly using just the name
AssemblyName assemblyName = new AssemblyName();
assemblyName.Name = simpleName;
Assembly assembly = Assembly.Load(assemblyName);
// Now replace the assembly's version number with
// the required version and return it.
assembly.GetName().Version = new Version(versionStr);
return assembly;
}
catch (Exception ex)
{
throw;
}
}
else
{ // search for given assembly under current loaded
foreach (Assembly ass in AppDomain.CurrentDomain.GetAssemblies())
if (ass.FullName.Contains(simpleName))
return ass;
throw new Exception("Could not find Assembly with name: "
+ simpleName);
}
}
Ich kann leider nicht mehr die Quelle benennen, welche mir den entscheidenden Hinweis lieferte.
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!