我间歇性地收到以下错误:
无法加载文件或程序集“com.mycompany.myapp”或其某个依赖项。找到的程序集的清单与 装配参考。
我有一个Ajax用户控件库,我构建并编译为DLL。该项目引用了项目A(com.mycompany.myapp)。我的主Web应用程序引用了此DLL,并且还引用了项目A.有时,当我尝试重建我的Web应用程序时会发生此错误。看起来项目A的引用在DLL和Web应用程序之间变得不同步。
这只能通过重建DLL,从Web应用程序中删除对DLL的引用,重新添加引用,然后重建Web应用程序来解决。谁能解释为什么会发生这种情况以及如何防止这种错误出现?
我正在寻找一个解决方案来解决这个问题,这样我就可以分发这个DLL而不用担心它需要间歇地重建和部署。
答案 0 :(得分:1)
这可能对你有帮助..我以前遇到过同样的问题,我做的是,我删除了bin文件夹中的文件,然后重建了应用程序,然后在主项目中添加了另一个项目,然后重建它们。
答案 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和版本2,因此这是不可能的,它会给您一个错误。这也可以解释为什么当你进行重建并删除DLL并再次添加它时它的工作原理。
这里的解决方案是将Ajax项目添加到您的解决方案中并每次都重建它。
答案 3 :(得分:1)
检查程序集“com.mycompany.myapp”在其AssemblyInfo.cs文件中是否没有AssemblyVersion属性,或者该版本没有星号导致自动生成版本。
只是一个想法。