.NET Assembly 32 oder 64 Bit

In der Entwicklungsumgebung nimmt man die Toolbox passend zum Betriebssystem.

Zur Auslieferung legt man beide Toolboxen in das “bin” Verzeichnis z.B.  unter “x32″ und “x64″.

Im eigenen Programm fügt man folgende Methode ein:


static Assembly LoadFromOtherFolder(object sender, ResolveEventArgs args)
{
string path;
if (System.IntPtr.Size == 4)
path = "x32\\";
else
path = "x64\\";
string folderPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
folderPath = Path.Combine(folderPath, path);
string assemblyPath = Path.Combine(folderPath, new AssemblyName(args.Name).Name + ".dll");
if (File.Exists(assemblyPath) == false) return null;
Assembly assembly = Assembly.LoadFrom(assemblyPath);
return assembly;
}

In der “Main” Methode, vor der erste Benutzung der Toolbox, fügt man folgenden Code hinzu:


AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.AssemblyResolve += new ResolveEventHandler(LoadFromOtherFolder);

Damit wird immer die Toolbox passend zum Betriebssystem geladen.

Vergessen Sie nicht das Redist Package für C++ VS 2017 einzuspielen:
https://aka.ms/vs/16/release/vc_redist.x86.exe
bzw.:
https://aka.ms/vs/16/release/vc_redist.x64.exe

Die Kommentarfunktion ist geschlossen.