2010-01-18 59 views
2

嘿伙计们,我有一个ASP.NET网站项目,由于某种原因坚持引用mscorlib 1.0.5和mscorlib 2.0,我不明白为什么。确定项目引用mscorlib

我已经使用NDepend分析了所有引用的DLL,并且它们都似乎只引用了mscorlib 2.0。我有几个Web引用,但我无法想象为什么会创建一个额外的引用到1.0 DLL。

任何人有任何想法,为什么我会得到这个额外的参考,或我可以用来找出这些信息? NDepend很棒,但回来后说“找到2个参考文献,使用更新的版本”,所以它不能帮助我找出为什么我有额外的参考...

回答

2

我认为在这一点最好的办法是使用反汇编。在程序集上使用ildasm将弹出一个名为“Manifest”的节点。双击该节点,它将转储包含引用版本号的程序集引用的IL表示。对所有DLL重复此操作,直到找到引用1.0版本的DLL。

EDIT

另一种可能的解决方案将是枚举值Assembly并且存在相关联GetReferencedAssemblies方法。这将返回一个AssemblyName值的数组,其中包含相应的Version成员。这应该包含引用程序集的实际版本与实际加载的版本。

我不是100%确定在这个问题上,并没有一个方便的方式来测试它现在。

+0

我很害怕这可能是答案:)看起来我已经有一个有趣的提前几个小时... – jvenema 2010-01-18 19:31:21

+0

谢谢贾里德,只是手动检查它们比我想象的要快,并且找到了罪魁祸首。 – jvenema 2010-01-18 19:40:19

0

尝试删除引用并重新编译 - 这会告诉你什么(如果有的话)取决于旧版本。

+0

你不能不幸地直接添加/删除对mscorlib的引用... – jvenema 2010-01-18 19:29:16

0

错误的引用可能驻留在您的web.config文件中。

善良,