错误消息'无法加载一个或多个请求的类型。检索LoaderExceptions属性以获取更多信息。

c# entity-framework

我使用Entity Framework ,SQL Server 2000,Visual Studio 2008和Enterprise Library开发了一个应用程序。

它在本地工作得非常好,但是当我将项目部署到我们的测试环境时,我收到以下错误:

无法加载一个或多个请求的类型。检索LoaderExceptions属性以获取更多信息

堆栈跟踪:在System.Reflection.Module._GetTypesInternal(StackCrawlMark和stackMark)

在System.Reflection.Assembly.GetTypes()

at System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadTypesFromAssembly(LoadingContext context)

在System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.InternalLoadAssemblyFromCache(LoadingContext context)

at System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadAssemblyFromCache(Assembly assembly,Boolean loadReferencedAssemblies,Dictionary 2 knownAssemblies, Dictionary 2&typesInLoading,List`1&errors)

at System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyFromCache(ObjectItemCollection objectItemCollection,Assembly assembly,Boolean loadReferencedAssemblies)

at System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyForType(Type type)

at System.Data.Metadata.Edm.MetadataWorkspace.LoadAssemblyForType(Type type,Assembly callingAssembly)

at System.Data.Objects.ObjectContext.CreateQuery [T](String queryString,ObjectParameter [] parameters)

实体框架似乎有问题,任何线索如何修复它?

一般承认的答案

我通过将项目引用的Copy Local属性设置为true来解决了这个问题。


热门答案

这个错误没有真正的魔术子弹答案。关键是要掌握所有信息以了解问题。很可能动态加载的程序集缺少引用的程序集。该程序集需要位于应用程序的bin目录中。

使用此代码确定缺少的内容。

using System.IO;
using System.Reflection;
using System.Text;

try
{
    //The code that causes the error goes here.
}
catch (ReflectionTypeLoadException ex)
{
    StringBuilder sb = new StringBuilder();
    foreach (Exception exSub in ex.LoaderExceptions)
    {
        sb.AppendLine(exSub.Message);
        FileNotFoundException exFileNotFound = exSub as FileNotFoundException;
        if (exFileNotFound != null)
        {                
            if(!string.IsNullOrEmpty(exFileNotFound.FusionLog))
            {
                sb.AppendLine("Fusion Log:");
                sb.AppendLine(exFileNotFound.FusionLog);
            }
        }
        sb.AppendLine();
    }
    string errorMessage = sb.ToString();
    //Display or log the error based on your application.
}


许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因