私のコードはサードパーティのライブラリ(dll)に依存しています。
Nuggetは異なるプラットフォーム(ここでも)を管理できないため、同じコードを複製して2つのプロジェクトを作成しました(コードを最小限に抑えました-基本的にAPIラッパー)。
1つのプロジェクトはdllのx86バージョンを参照し、もう1つのプロジェクトはx64を参照します。
私のソリューションには、これらのプロジェクトを参照するプロジェクトが1つだけあります。
両方を参照し、条件付きで参照します(したがって、x64構成でビルドすると、x64 dllを参照するプロジェクトが参照されます)。
その.csprojには次のようなものが含まれています。
ProjectReference Include="..\3rdPartyModule.x86\3rdPartyModule.x86.csproj" Condition="'$(Platform)' == 'x86'"
と
ProjectReference Include="..\3rdPartyModule.x64\3rdPartyModule.x64.csproj" Condition="'$(Platform)' == 'x64'"
今、奇妙なことが起こります:
両方のプロジェクトをアンロードしてから、最初にx86プロジェクトをロードし、次にx64プロジェクトをロードすると、x64プロジェクトの参照は、実際にはx86 dllを指していることを示しています(パスを確認できます)。
ロードの順序を変更すると、その逆になります。x64は問題ありませんが、x86はx64バージョンを参照しています。
私の推測では、VSはすでにメモリ内に同じ名前のアセンブリを見つけ、2番目から1番目を自動的に参照します。
これは既知の問題ですか?それを回避する方法はありますか?