在我的项目文件中,我有以下条目:
<Reference Include="Microsoft.Practices.Unity, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\..\..\..\Libraries\Microsoft.Practices.Unity.dll</HintPath>
</Reference>
这在绝对意义上翻译为:
C:\dev\LUT600 2.1.1\OCC600\Libraries
不知何故,当我尝试编译项目时,Visual Studio 从完全不同的路径加载引用:
/reference:"C:\Program Files\Microsoft Enterprise Library 4.1 - October 2008\Bin\Microsoft.Practices.Unity.dll.
它如何解析到这个位置完全是个谜,因为这个 DLL 在这个项目的任何地方都没有被引用。
我已将特定版本设置为 true,但它仍然可以解析来自此位置的引用。
有任何想法吗?
TIA。
克劳斯
最佳答案
可能引用与该特定位置中的程序集的版本号不同,因此它开始在其他地方搜索以找到“更好”的匹配项。
VS 不只是获取您指定的文件,而是始终使用探测路径来尝试查找引用的程序集。这通常会提供随机的“选择具有相同名称的任何东西”的效果。在我们的构建服务器上,我曾经发现一个程序集的 996 个副本。 995是相同的,正确的版本,一个是错误的版本。有一天,我们的构建停止工作,因为它无缘无故地突然决定使用一个错误的副本!
尝试删除并重新创建引用。这通常有帮助。
在最坏的情况下,从您的 PC 中删除该程序集的所有副本,但您希望链接到的版本除外。 (如果可能的话,不要破坏任何你珍视的东西)
关于visual-studio - Visual Studio 2008 解决错误的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1615132/