Arquitetura da CPU Independente P / Invoke: O DllName ou o caminho podem ser “dinâmicos”?

Existe uma maneira de ter a DLL específica referenciada por uma assinatura P / Invoke (DllImport) depende da arquitetura da CPU?

Eu estou trabalhando em um aplicativo que carrega um grande número de assinaturas de método de uma dll nativa de um fornecedor de terceiros, neste caso, a DLL de interface de espaço de usuário para um pedaço de hardware. Esse fornecedor agora começou a fornecer as versões x86 e x64 da DLL agora, e acho que meu aplicativo se beneficiaria da execução como um processo de 64 bits. Exceto por esta DLL, tudo é código .NET, então construir como "Qualquer CPU" funcionaria.

Todas as assinaturas de método na DLL nativa são as mesmas em 64 bits, no entanto o nome da DLL é diferente (Foo.dll vs. Foo_x64.dll). Existe alguma maneira através das assinaturas P / Invoke ou entradas app.config posso obtê-lo para escolher qual DLL para carregar com base na arquitetura da CPU em execução?

Se, em vez de nomes de DLL diferentes, fosse o mesmo nome em pastas diferentes, isso abriria outras opções?

NB: Como é essencial que a versão dessa DLL de espaço do usuário corresponda ao driver do kernel instalado para o hardware, a DLL não é fornecida com o nosso aplicativo, mas dependemos do instalador do fornecedor para colocá-lo em um diretório no% CAMINHO%.

questionAnswers(3)

yourAnswerToTheQuestion