找出什么参考dll

时间:2012-07-30 21:22:45

标签: asp.net enterprise-library dll .net-reflector ildasm

我刚刚解决了以下错误:

System.IO.FileLoadException:无法加载文件或程序集“Microsoft.Practices.EnterpriseLibrary.Common,Version = 5.0.505.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。

奇怪的是 - 当我发布版本时,它似乎只是一个问题,虽然有点间歇性 - 我可以创建一个调试版本,这个问题有时会暂时消失。

原来我在项目Microsoft.Practices.EnterpriseLibrary.Data.dll中有一个未使用的企业库dll,版本为5.0.505.0,看起来它试图引入v.5.0。 505.的Microsoft.Practices.EnterpriseLibrary.Common,当这个'Common'dll的v.5.0.414.0已经在项目中。没有确定为什么这主要发生在发布模式。

有助于跟踪此问题并清楚地确定原因的一些事情是找出确定哪个dll将另一个dll拖入我的Visual Studio项目中?我希望能够从导致问题的dll开始,看看包含它的dll是什么。这个回答:

Find out why Visual Studio decides to copy DLLs into a bin directory

说可以使用ildasm或反射器,但是你需要使用这些工具来寻找什么?我用谷歌搜索了这个,但没有看到任何东西。

作为旁注,关于为什么切换到发布模式的任何想法会导致我的问题?我想知道这样做是否会导致Visual Studio尝试从某个地方提取Microsoft.Practices.EnterpriseLibrary.Common的发布版本,这是错误的版本,但这对我来说没有任何意义,因为这是一个'第三方'(Microsoft )已经处于发布模式的库,它不解释间歇性,我不明白为什么将单个项目切换到发布模式会影响对外部库的引用。

0 个答案:

没有答案