ASP.Net 构建错误 - 未引用程序集

3
当我尝试构建我的asp.net应用程序时,我遇到了构建错误。错误如下:
“类型'MediCare.Framework.Authentication.IUserAuthenticate'在未被引用的程序集中定义。您必须添加对程序集'MediCare.Framework,版本=1.0.1.95,Culture = neutral,PublicKeyToken = 1999fa3c42b9'的引用。”
我可以在引用文件夹中看到库中的类。我该如何调试此问题? 我的意图是将参考文件夹指向库源代码的bin目录(因为pdb文件位于那里,任何对库的更新都会反映在应用程序中)。 但是,当我将引用文件夹指向源代码的bin目录时,就会出现上述错误消息。
更新:该应用程序最初是在VS 2008中开发的,我正在2010中进行修改。如果我使用VS 2010,则GAC程序集将在哪里(2.0框架位置或4.0框架位置)?.NET 4.0有一个新的GAC,为什么?

更新(2012年6月26日)
GAC中的文件(“C:\Windows\assembly\”)已被删除。但是此错误仍在发生。


这是正确的版本吗? - jrummell
是的,这是正确的版本。 - DNR
你是否已将程序集引用设置为在GAC中不存在且在其他地方被引用时进行本地复制? - Dan Lister
几个问题:您是如何添加引用的?具体来说,您是否选择了“浏览”选项卡,然后在“添加引用”对话框中从磁盘位置选择了dll?其次,您是如何进行调试的?使用Cassini还是IIS?在构建应用程序时,该dll是否被复制到bin文件夹中? - user1429080
@SimonMourier 在编译时出现了错误。 - DNR
显示剩余2条评论
2个回答

6

这可能是由于版本不一致引起的。也就是说,为了解决这个问题,我建议对所有程序集进行完全清理和重新构建(包括嵌套在某些程序集中的程序集)。只需彻底重新构建所有程序集即可。就可以解决该问题。


那真的很有效,但.NET是绝对最糟糕的。 - Charlie Martin

2
进入Windows资源管理器,右键单击项目使用的包含此类的DLL文件,并查看版本选项卡。确保版本号与错误消息中看到的相匹配。我的猜测是不会匹配。
如果匹配,则检查全局程序集缓存(GAC),确保没有不同版本的DLL文件被拾取。为此,请转到Windows资源管理器,导航到c:\ windows \ assembly。查看其中是否有具有不同版本号的程序集。如果有,则可能需要从GAC中删除它(但要小心,因为其他应用程序可能依赖它存在)。

GAC程序集中的“常规”选项卡显示正确的版本。而“版本”选项卡显示1.0.0.1版本。这是为什么呢? - DNR
@DotNetRookie - 我认为你关心的是通用版本(但我不是GAC专家,所以不确定)。你可能也想看看这篇帖子:http://stackoverflow.com/questions/8828725/how-do-i-force-an-assembly-to-uninstall-from-the-gac - dcp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接