using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
namespace test {
class Program {
static Program() {
AppDomain.CurrentDomain.AssemblyResolve += OnAssemblyResolve;
}
static void Main(string[] args) {
Assembly.Load("Windows.dll");
Windows.Windows win = new Windows.Windows();
while (true) {
Print(win.addieren(3, 5).ToString());
Console.ReadKey();
}
}
readonly static Dictionary<string, Assembly> _libs = new Dictionary<string, Assembly>();
static Assembly OnAssemblyResolve(object source, ResolveEventArgs args) {
Assembly assembly = null;
String keyName = new AssemblyName(args.Name).Name;
if (keyName.Contains(".resources"))
return null;
if (_libs.ContainsKey(keyName))
return _libs[keyName];
String dllName = DllResourceName(keyName);
using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(dllName)) {
if (stream == null) {
Print("Error! Unable to find '" + dllName + "'");
return null;
}
byte[] buffer = new BinaryReader(stream).ReadBytes((int)stream.Length);
assembly = Assembly.Load(buffer);
_libs[keyName] = assembly;
return assembly;
}
}
private static String DllResourceName(String ddlName) {
if (!ddlName.Contains(".dll"))
ddlName += ".dll";
foreach (string name in Assembly.GetExecutingAssembly().GetManifestResourceNames()) {
if (name.EndsWith(ddlName))
return name;
}
return ddlName;
}
static void Print(String strText) {
Console.WriteLine(strText);
}
}
}