C# 升级至.NET4.0&;获取无法加载对已删除的旧版本DLL的文件或程序集引用

C# 升级至.NET4.0&;获取无法加载对已删除的旧版本DLL的文件或程序集引用,c#,.net,reference,C#,.net,Reference,System.IO.FileLoadException:无法加载文件或程序集“FOO,Version=1.0.3975.20137,Culture=neutral,PublicKeyToken=2aec35e026e7fee4”或其依赖项之一。定位的程序集清单定义与程序集引用不匹配。(来自HRESULT的异常:0x8013100) 文件名:'FOO,版本=1.0.3975.20137 我有一个C#程序,我们会不断更新,然后重新安装。看起来,自从我将项目从VS2005升级到VS2010,将.NET

System.IO.FileLoadException:无法加载文件或程序集“FOO,Version=1.0.3975.20137,Culture=neutral,PublicKeyToken=2aec35e026e7fee4”或其依赖项之一。定位的程序集清单定义与程序集引用不匹配。(来自HRESULT的异常:0x8013100) 文件名:'FOO,版本=1.0.3975.20137

我有一个C#程序,我们会不断更新,然后重新安装。看起来,自从我将项目从VS2005升级到VS2010,将.NET从2.0升级到4.0,我遇到了一个奇怪的错误,它试图引用上次安装的dll的旧版本

当我转到安装了Prorgam文件的目录(x86)/。。。。DLL的最新版本在那里。代码中没有对旧DLL的引用。解决此问题的唯一方法是手动卸载程序并重新安装。之后,程序运行良好


我很困惑,为什么它要继续引用一个旧的DLL版本,而它甚至不在那里。我试过运行fuslogvw.exe,但没有得到任何有用的信息。我还认为这可能是安装项目,我删除并重新创建一个从头开始。我还做了通常的清洁解决方案&重建。我通过论坛和在线搜索了所有内容,但大多数人似乎都有一个问题,他们的DLL的旧版本仍然在程序目录中,而新的DLL没有安装。我的问题正好相反。

当清理操作出于某种原因忘记删除项目bin目录中的所有DLL时,我出现了此错误,我不得不手动删除这些DLL。您可能需要检查是否在更新过程中删除了所有相关DLL。我猜卸载程序时会发生这种情况,这就是为什么它能正常工作。

我将从谁部署了上一个破坏性版本开始

他们的机器可能错误地引用了错误/旧版本,无论是在GAC中还是在BIN目录中。另外,您提到“手动”重新安装。。这是否意味着您有一些构建服务器或其他部署自动化?它可能正在拾取程序集引用


基本上,您需要准确跟踪坏应用程序如何部署到该机器上并进行修复。

您需要让Fuslogvw.exe为您工作。记录所有绑定,不要忘记单击刷新。同时记录你是否有一台新机器。以及EXE项目的平台目标设置。这不是机器问题。这是一个程序/部署问题。我在多台机器上看到过这个问题。当我说手动重新安装。我的意思是要添加删除程序并从那里卸载它。然后重新运行setup.exe安装。通常我只运行新的安装文件,卸载旧版本属性设置为true,它会自动执行。但我已经在卸载旧版本然后手动安装新版本的地方对其进行了测试。看来让它正常工作的唯一方法就是安装两次。@user517761:啊,我明白了。你知道,我以前也遇到过类似的事情。唯一的区别似乎是我们正在安装服务。这种情况并非总是发生,但似乎发生在某些机器配置上(XP、某些SP级别…)。我们并没有费心去追踪它,而是把它作为一个标准的程序来进行卸载、重新启动和安装。我想知道安装程序是否为某些操作系统而被劫持。我已经删除了安装项目并创建了一个新项目。WinXP 32位和Win7 64位的问题是相同的。这是相当模糊的。它肯定是清除它和新版本的DLL在那里。我查了好几次了。它试图引用已更新的旧dll