模糊参考错误

时间:2013-04-12 18:22:25

标签: asp.net vb.net visual-studio-2010 user-controls

我间歇性地收到以下错误:

  

无法加载文件或程序集“com.mycompany.myapp”或其某个依赖项。找到的程序集的清单与   装配参考。

我有一个Ajax用户控件库,我构建并编译为DLL。该项目引用了项目A(com.mycompany.myapp)。我的主Web应用程序引用了此DLL,并且还引用了项目A.有时,当我尝试重建我的Web应用程序时会发生此错误。看起来项目A的引用在DLL和Web应用程序之间变得不同步。

这只能通过重建DLL,从Web应用程序中删除对DLL的引用,重新添加引用,然后重建Web应用程序来解决。谁能解释为什么会发生这种情况以及如何防止这种错误出现?

我正在寻找一个解决方案来解决这个问题,这样我就可以分发这个DLL而不用担心它需要间歇地重建和部署。

4 个答案:

答案 0 :(得分:1)

这可能对你有帮助..我以前遇到过同样的问题,我做的是,我删除了bin文件夹中的文件,然后重建了应用程序,然后在主项目中添加了另一个项目,然后重建它们。

"Could not load file or assembly" error but I don't know which project is referencing this assembly with old number

答案 1 :(得分:1)

验证对项目A的引用(对于两个项目)并确保它们引用相同的程序集和/或项目。 (最常见的原因) The located assembly's manifest definition with name xxx.dll does not match the assembly reference

答案 2 :(得分:1)

如果您在同一个解决方案中拥有所有项目,则需要确保它们都是项目引用而不是文件引用。您可以通过右键单击项目并转到properties =>来检查这一点。引用。

在您的参考列表中,您将看到名为“copy local”的列。如果将其设置为false,则表示您按文件而不是项目(在构建DLL后不更新DLL)引用它。要解决此问题,请删除引用并再次添加(确保从解决方案中引用它,而不是通过引用硬盘驱动器上的DLL)。

如果您没有在同一解决方案中包含所有项目,那么这是正常行为。 假设您的Ajax控件库不在解决方案中。

起始情况如下:

  • Ajax引用A(版本1)
  • 项目参考A(版本1)
  • 项目引用Ajax(版本1)

在构建解决方案(其中没有Ajax项目)之后,您将遇到以下情况:

  • Ajax引用A(版本1)
  • 项目参考A(版本2)
  • 项目引用Ajax(版本1)

正如您所看到的,编译器突然需要引用A版本1和版本2,因此这是不可能的,它会给您一个错误。这也可以解释为什么当你进行重建并删除DLL并再次添加它时它的工作原理。

这里的解决方案是将Ajax项目添加到您的解决方案中并每次都重建它。

答案 3 :(得分:1)

检查程序集“com.mycompany.myapp”在其AssemblyInfo.cs文件中是否没有AssemblyVersion属性,或者该版本没有星号导致自动生成版本。

只是一个想法。