CPU Architecture Independent P / Invoke: Kann der DLL-Name oder der Pfad "dynamisch" sein?

Gibt es eine Möglichkeit, die bestimmte DLL, auf die durch eine P / Invoke-Signatur (DllImport) verwiesen wird, von der CPU-Architektur abhängig zu machen?

Ich arbeite an einer Anwendung, die eine große Anzahl von Methodensignaturen aus einer nativen DLL eines Drittanbieters lädt, in diesem Fall der DLL für die Benutzerschnittstelle auf eine Hardware. Dieser Anbieter hat jetzt damit begonnen, sowohl x86- als auch x64-Versionen der DLL bereitzustellen, und ich denke, meine App würde davon profitieren, wenn sie als 64-Bit-Prozess ausgeführt wird. Mit Ausnahme dieser einen DLL ist alles .NET-Code, so dass die Erstellung als "Beliebige CPU" funktionieren würde.

Alle Methodensignaturen in der nativen DLL sind auf 64-Bit-Dateien identisch, der Name der DLL ist jedoch unterschiedlich (Foo.dll vs. Foo_x64.dll). Gibt es eine Möglichkeit, durch die P / Invoke-Signaturen oder die app.config-Einträge herauszufinden, welche DLL basierend auf der ausgeführten CPU-Architektur geladen werden soll?

Wenn anstelle verschiedener DLL-Namen derselbe Name in verschiedenen Ordnern verwendet wurde, werden dann andere Optionen geöffnet?

NB: Da es wichtig ist, dass die Version dieser User-Space-DLL mit dem installierten Kernel-Treiber für die Hardware übereinstimmt, wird die DLL nicht mit unserer App mitgeliefert. Stattdessen hängt sie vom Installationsprogramm des Herstellers ab, um sie in einem Verzeichnis in% abzulegen. PFAD%.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage