"无法加载文件或程序集'XXX.YYY'或其中一个依赖项.系统找不到指定的文件."

ama*_*eur 9 c# dll exception filenotfoundexception visual-studio

我有一个.net visual studio解决方案,包含许多项目(类库和Web应用程序).

我做了一些refractoring,它在项目之间移动文件,创建新项目,删除未使用的项目,并重命名一些现有项目.

解决方案构建没有问题,但是当我运行Web应用程序时,会发生以下异常:

"无法加载文件或程序集'XXX.YYY'或其中一个依赖项.系统找不到指定的文件."

这个名为XXX.YYY的项目在refractoring中被删除了一个名为XXX.YYY的dll.但是这不适用于应用程序中的任何位置.我删除了web应用程序obj目录和bin文件夹并重建但仍然会发生.

任何人都有任何想法,这可能发生,任何提示?

更新:

更新我的问题.我把代码放到另一台计算机上并从那里运行它,它构建并成功运行,没有出现这个问题.所以这让我觉得问题在于我的PC而不是代码库.也许我的电脑上有一些缓存的东西.我确实在"C:\ Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files"中删除了我的临时文件,但没有运气.

所以其他任何可能被缓存或任何其他原因在我的PC上发生.

进一步更新

关于此的另一个更新.我在其他开发者机器上运行了相同的代码,并没有运行它的问题.所以一定要在我的机器上做点什么!我们机器上唯一不同的是我在经典模式下使用应用程序的应用程序池运行IIS7.另一个开发人员正在运行IIS6.

2件新信息.首先在我的web.config中的httpmodules中,我必须在添加之前删除自定义http模块.其他开发人员不必这样做.其次,我已经能够修复"无法加载文件或程序集'XXX.YYY'或其中一个依赖项"的问题,通过"hack",这只是一个短期修复,通过在我的项目中创建一个名为XXX的类库.YYY并包括要查找的类,这些都是自定义控件,即.继承自System.Web.UI.WebControls.WebControl.

还有什么想法......

Har*_*wok 5

有两个可能的原因.

1)运行webapp时,仍然可以在计算机上的某个位置使用旧的程序集.您的旧程序集引用了旧程序集"XXX.YYY".

2)您构建的最新二进制文件仍引用旧程序集"XXX.YYY".

要找出您的webapp使用的程序集,如果您正在运行调试程序,可以从输出窗口轻松找到它.它应该是输出的前几行.另一种方法是在调试期间在VS.NET IDE中打开Module窗口.

如果由于某些原因无法调试它或者连接调试器时遇到问题,另一种更简单的方法是使用fuslogvw.它为您提供了所有成功加载的assemblis以及无法加载的程序集的确切位置.请确保在Windows 7中以管理员身份运行fuslogvw.

在找到webapp成功加载的程序集后,可以对这些程序集执行ildasm以查看它们引用的程序集.不幸的是,你需要逐个检查它们.

我的猜测是,一些成功加载的程序集实际上来自ASP.NET缓存或GAC中的某个位置.

  • +1教育.我不知道fuslogvw. (2认同)

ama*_*eur 0

好消息我已经解决了这个问题!!!我必须重新安装 .net 运行时环境。我还从 IIS 中删除了网站,然后再次读取该网站。当我运行它时,问题没有发生并且站点运行。

非常感谢大家的帮助和帮助,非常感谢。所有的建议和帮助都引导我解决这个问题!