这可能不是Microsft.Practices特定的问题(可能不是100%肯定),但它似乎只发生在这个(企业图书馆和Unity)。
基本上,我们在二进制引用位置拥有自定义版本的EntLib(以及Unity的非自定义版本)。我们在同一地点也有一些内部共享二进制文件。
当我通过TFS构建时,所有内部库都从共享位置复制,但EntLib和Unity dll从服务器上的已安装位置(而不是共享位置)进行复制。我已经验证了EntLib dll位于正确的共享位置。
有关为何发生这种情况的任何想法?
更新
在进一步观察之后,似乎如果没有修改dll,那么无论参考点在哪里,它都会拉动GAC版本。这意味着如果我在GAC中有hell.dll并且对c:\ hell.dll的引用它将采用GAC版本,除非c:\ dll.hell已更改。任何人都可以证实这是我所看到的行为吗?
答案 0 :(得分:4)
您从GAC获取的发现是正确的。如果StrongName匹配(名称,版本,公钥标记),无论参考点在何处,标准.NET探测都将始终从GAC中提取内容。我想说,在构建期间保留您可能正在构建或引用的内容并希望完全控制Dev / Build机器上的GAC,这是最佳实践。