错误消息“无法加载一种或多种请求的类型。检索 LoaderExceptions 属性以获取更多信息。
Posted
技术标签:
【中文标题】错误消息“无法加载一种或多种请求的类型。检索 LoaderExceptions 属性以获取更多信息。【英文标题】:Error message 'Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.' 【发布时间】:2010-11-08 16:14:18 【问题描述】:我使用Entity Framework、SQL Server 2000、Visual Studio 2008 和 Enterprise Library 开发了一个应用程序。
它在本地工作得很好,但是当我将项目部署到我们的测试环境时,我收到以下错误:
无法加载一种或多种请求的类型。检索 LoaderExceptions 属性以获取更多信息
堆栈跟踪:在 System.Reflection.Module._GetTypesInternal(StackCrawlMark& stackMark)
在 System.Reflection.Assembly.GetTypes()
在 System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadTypesFromAssembly(LoadingContext 上下文)
在 System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.InternalLoadAssemblyFromCache(LoadingContext 上下文)
在 System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadAssemblyFromCache(Assembly 程序集,布尔 loadReferencedAssemblies,Dictionary
2 knownAssemblies, Dictionary
2& typesInLoading,List`1& 错误)在 System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyFromCache(ObjectItemCollection objectItemCollection,Assembly 程序集,布尔 loadReferencedAssemblies)
在 System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyForType(类型类型)
在 System.Data.Metadata.Edm.MetadataWorkspace.LoadAssemblyForType(类型类型,程序集调用Assembly)
在 System.Data.Objects.ObjectContext.CreateQuery[T](String queryString, ObjectParameter[] 参数)
实体框架似乎有问题,有什么解决办法吗?
【问题讨论】:
没有灵丹妙药可以解决这个问题,但这个答案将帮助您了解确切原因***.com/a/8824250/185022 我通过从 Azure 中删除所有文件并重新部署 API 解决了这个问题。 【参考方案1】:我在使用 Visual Studio 2015 创建新的 Microsoft Word 插件时也遇到了这个问题。问题是我有两个版本的 MS Office,2013 和 2016。我卸载了 MS Office 2013,然后它就可以工作了。
【讨论】:
【参考方案2】:我在 Nuget 控制台中输入迁移命令时遇到了实体框架的这个问题。
当我将我的 OAuthAuthorizationServerProvider
代码从我的应用程序移动到包含核心数据访问逻辑以及我的 DBContext 类的类库项目中时,问题出现了。
我检查了类库项目引用的所有 DLL。对于所有这些(.net 系统 DLL 除外)CopyToLocal 是真的,我完全糊涂了。
我知道 DLL 本身而不是我的代码有问题。我再次检查了它们,发现当我将 ApplicationOauthProvider
类移动到类库项目中时,ApplicationOauthProvider
继承自 OAuthAuthorizationServerProvider
> 位于 Microsoft.Owin.Security.OAuth
程序集中的类,我检查了它的包版本,突然注意到我用于类库项目(不是我的应用程序项目)的包版本非常旧 2.1,但是在我的应用程序上安装了最新版本(3.0.1),所以我从 Nuget 升级了 Microsoft.Owin.Security.OAuth
包的版本,用于我的类库项目,问题就解决了
简而言之,在检查您的 DLL 的 CopyToLocal
属性后,也要检查它们的版本并将旧版本更新为最新版本
【讨论】:
【参考方案3】:这也发生在我身上。我解决了如下问题: 右键单击解决方案,管理解决方案的 NuGet 包... 合并软件包并将软件包升级为同一版本。
【讨论】:
【参考方案4】:我在引用 nuget 包时遇到了这个问题,后来我使用删除选项从我的项目中删除它。在与这个问题斗争了几个小时后,我不得不清除 bin 文件夹。为避免这种情况,建议使用 nuget 卸载不需要的软件包,而不是通常的删除
【讨论】:
【参考方案5】:在我的情况下,我的项目中安装了一个 nuget 包,但是包文件夹从未检入 TFS,因此在构建机器中缺少 nuget 包 bin 文件。因此在生产中我遇到了这个错误。我必须将 bin 文件夹与我的本地文件夹进行比较,然后我发现哪些 dll 丢失了,并且我发现这些 dll 属于一个 nuget 包。
【讨论】:
【参考方案6】:如果您在 PowerShell 中引用 .dll 时遇到此错误,并且您的 .dll 是 .NET 5(也是 .NET Core?),那么您应该确保在 PowerShell 6+ 中执行 PowerShell 脚本而不是 Windows PowerShell 5.1(或更早版本)。这在特定情况下帮助了我。
【讨论】:
以上是关于错误消息“无法加载一种或多种请求的类型。检索 LoaderExceptions 属性以获取更多信息。的主要内容,如果未能解决你的问题,请参考以下文章
如何解决 weasyprint 错误消息 gobject-2.0-0 错误 0x7e 消息?
如何在spring mvc 3.0中的同一jsp中显示运行时错误消息或sql错误消息