具有相同名称的程序集引用忽略提示路径

时间:2012-10-18 13:03:30

标签: visual-studio-2010

我的代码依赖于第三方库(dll)。

由于Nugget's inability to manage different platformsalso here),我创建了两个具有相同代码重复的项目(将代码保持在最低限度 - 基本上是一个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在内存中找到了一个具有相同名称的程序集,并自动将第二个引用到第一个程序集。

这是一个已知问题吗?有办法吗?

1 个答案:

答案 0 :(得分:1)

VS2010曾经存在一个错误,在这种情况下,在VS UI中没有正确显示引用,但在编译期间会复制正确的文件。在您的情况下,您是否在构建输出目录中获得了正确的文件版本?

此外,您可能希望为引用的程序集设置不同的别名(来自引用属性)。这可能有所帮助。