【问题标题】:Method X from Type Y in Assembly Z does not have an Implementation来自程序集 Z 中类型 Y 的方法 X 没有实现
【发布时间】:2012-07-10 03:44:08
【问题描述】:

我很困惑!

我有一个解决方案,在发布和部署时会出现以下错误:

Exception information: 
Exception type: HttpException 
Exception message: Method 'GetDemosSubsidiaryById' in type 'DG.Crm.DataAccess.Crm2011WS.Repositories.ReferenceEntitiesRepository' from assembly 'DG.Crm.DataAccess.Crm2011WS, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' does not have an implementation.
<stack trace>

显然它构建得很好,并且该方法已实现并且肯定存在于库中。我使用反射器检查已部署的 DLL,我也看不到任何异常之处——类存在,类型存在,方法已实现。它所抱怨的特定方法也没有被调用。

我已删除所有引用并在解决方案中重新添加它们。

我使用 Visual Studio 中的“实现接口”快捷方式重新创建了 DG.Crm.DataAccess.Crm2011WS.Repositories.ReferenceEntitiesRepository

解决方案在 Visual Studio 中加载并正常工作。

我在这里遗漏了什么或者我在哪里可以找到更多信息?

编辑以添加解决方案结构:

2011WS 库实现了存在于Common 库中的接口。然后两者都被 WebApps MVC Web 应用程序引用。

【问题讨论】:

  • 那是您的程序集 DG.Crm.DataAccess.Crm2011WS 吗?您是否检查了给定的方法是否已实现?您的程序集是否来自 GAC?
  • 愚蠢的问题,但您是否确认 IIS 中指定的 .NET 版本与您项目中使用的版本匹配?
  • 这是我的程序集,是的,方法已实现(否则我会看到编译时错误,告诉我接口尚未实现)。据我所知,GAC 中没有库。
  • IIS 配置是为解决方案的目标框架 .Net 4 设置的
  • 啊哈,不,我认为@nunespascal 是对的——有人在我不知道的情况下在 GAC 中安装了一个库。谜团解开了!

标签: .net asp.net-mvc-3 typeloadexception


【解决方案1】:

仅供参考...我有同样的错误。在我的情况下,结果证明程序集 B 被不在 GAC 中的程序集 A 引用。该错误表明程序集 A 存在问题,因此有点误导。

【讨论】:

  • 就我而言,我在程序集中有一个接口,专门用于位于两个位置的合同。此程序集只有一个位置已更新,但碰巧另一个是应用程序首先加载的位置并导致此异常。
  • 如何找到程序集 B 名称?
【解决方案2】:

原来在 GAC 中有一个库的旧版本。我遇到的问题是冲突的库是 DTO,而不是错误中引用的库。

所以在我的例子中,要更加小心 GAC 中的内容!

【讨论】:

  • 我的问题类似。对 gacutil .dll 有一个后期构建事件。 gacutil 路径错误,导致项目仍在构建但从未在 GAC 中更新。
  • 我想我也有同样的问题。您如何在 GAC 中找到较旧的库名称? @RyanThomas
猜你喜欢
  • 1970-01-01
  • 2011-07-17
  • 1970-01-01
  • 2011-08-24
  • 1970-01-01
  • 1970-01-01
  • 2012-10-21
  • 2013-01-02
  • 1970-01-01
相关资源
最近更新 更多