錯誤消息'無法加載一個或多個請求的類型。檢索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.
}


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因