我的代码依赖于第三方库 (dll)。
由于Nugget 无法管理不同的平台(也在此处),我创建了两个重复相同代码的项目(将代码保持在最低限度 - 基本上是一个 API 包装器)。
一个项目引用 dll 的 x86 版本,另一个项目引用 x64。
我的解决方案中只有一个项目引用了这些项目。
它同时引用它们,并且有条件地这样做(所以当我使用 x64 配置构建时,项目引用了 x64 dllis 引用等)
它的 .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 在内存中找到了一个同名的程序集,并自动将第二个引用到第一个。
这是一个已知的问题?有办法解决吗?