こちらのMSDNドキュメントによると、アセンブリのIDは、単純な名前、バージョン番号、暗号化キーペア、およびサポートされているカルチャで構成されます。
ただし、GACにアセンブリを追加する際、ProcessorArchitectureはアセンブリを一意に識別するためにも使用されます。.NET FrameworkはProcessorArchitectureをアセンブリIDの一部として扱いますか?
こちらのMSDNドキュメントによると、アセンブリのIDは、単純な名前、バージョン番号、暗号化キーペア、およびサポートされているカルチャで構成されます。
ただし、GACにアセンブリを追加する際、ProcessorArchitectureはアセンブリを一意に識別するためにも使用されます。.NET FrameworkはProcessorArchitectureをアセンブリIDの一部として扱いますか?
アセンブリにバージョン固有の参照を設定すると、その参照には次のアーキテクチャが含まれます。
<Reference Include="SomeAssembly, Version=1.0.0.0, Culture=neutral, processorArchitecture=x86">
x86はMSIL(anyCPU)、x64などでもかまいません。
ただし、アセンブリを解決しようとすると(ランタイムは定義されたアーキテクチャを要求しません)、それを優先するだけです。つまり、参照がx86アセンブリへの参照であるが、現在のDLLファイルがAnyCPUである場合、ランタイムは見つかったDLLを使用します(x86 DLLファイルが存在する場合のAnyCPUアセンブリへの参照についても同じです)。
(私はこれをプライベートにデプロイされたアセンブリでテストしましたが、共有アセンブリ(つまり、GACされたアセンブリ)のプロービングプロセスはほとんど同じように機能すると思います)。(もちろん、これはx86アセンブリをx64プロセスにロードしないという制限に違反することはありません。その逆も同様です)。