using System; using System.Reflection; using System.Runtime.Remoting; using System.Globalization; class App { static void Main() { AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(ResolveAssembly); try { object obj = FromAssembly("lib"); InvokeObject(obj); } catch(Exception e) { Console.WriteLine(e.GetType().ToString()); } } static Assembly ResolveAssembly(object sender, ResolveEventArgs args) { string[] name = args.Name.Split(); string assem = name[0].Substring(0, name[0].Length-1); return Assembly.LoadFrom(assem + ".old"); } static object UsePartialName(string name) { Assembly a = Assembly.LoadWithPartialName(name); Type type = a.GetType("LibraryCode"); ConstructorInfo ctor = type.GetConstructor(Type.EmptyTypes); return ctor.Invoke(null); } static object UseAppDomain(string name) { AppDomain ad = AppDomain.CurrentDomain; return ad.CreateInstanceAndUnwrap(name, "LibraryCode"); } static object FromAssembly(string shortName) { Console.WriteLine("Use Assembly.Load"); AssemblyName name = new AssemblyName(); name.Name = shortName; name.Version = new Version("1.0.0.0"); name.CultureInfo = new CultureInfo(""); byte[] pkt = new byte[] {0xed,0xe6,0x78,0x9f,0xb0,0xb1,0x32,0x19}; name.SetPublicKeyToken(pkt); Assembly a = Assembly.Load(name); Type type = a.GetType("LibraryCode"); ConstructorInfo ctor = type.GetConstructor(Type.EmptyTypes); return ctor.Invoke(null); } static object UseActivator(string name) { ObjectHandle oh = Activator.CreateInstance(name, "LibraryCode"); return oh.Unwrap(); } static object FromFile(string fileName) { System.IO.FileStream fs = System.IO.File.OpenRead(fileName); byte[] data = new byte[fs.Length]; fs.Read(data, 0, data.Length); fs.Close(); Assembly a = Assembly.Load(data); Type type = a.GetType("LibraryCode"); ConstructorInfo ctor = type.GetConstructor(Type.EmptyTypes); return ctor.Invoke(null); } static void InvokeObject(object obj) { Type type = obj.GetType(); MethodInfo mi = type.GetMethod("GetVersion"); string version = (string)mi.Invoke(obj, null); Console.WriteLine(version); } }