Messaggio di errore 'Impossibile caricare uno o più dei tipi richiesti. Recupera la proprietà LoaderExceptions per ulteriori informazioni. '

c# entity-framework

Domanda

Ho sviluppato un'applicazione utilizzando Entity Framework , SQL Server 2000, Visual Studio 2008 e Enterprise Library.

Funziona perfettamente a livello locale, ma quando distribuisco il progetto nel nostro ambiente di test, viene visualizzato il seguente errore:

Impossibile caricare uno o più dei tipi richiesti. Recupera la proprietà LoaderExceptions per ulteriori informazioni

Traccia stack: su System.Reflection.Module._GetTypesInternal (StackCrawlMark e stackMark)

a System.Reflection.Assembly.GetTypes ()

su System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadTypesFromAssembly (contesto LoadingContext)

a System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.InternalLoadAssemblyFromCache (contesto di LoadingContext)

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

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

a System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyForType (Tipo tipo)

a System.Data.Metadata.Edm.MetadataWorkspace.LoadAssemblyForType (Tipo tipo, Assembly callingAssembly)

a System.Data.Objects.ObjectContext.CreateQuery [T] (String queryString, ObjectParameter [] parametri)

Entity Framework sembra avere un problema, qualche indizio su come risolverlo?

Risposta accettata

Ho risolto questo problema impostando l'attributo Copia locale dei riferimenti del mio progetto su true.


Risposta popolare

Questo errore non ha una vera risposta magica. La chiave è avere tutte le informazioni per capire il problema. Molto probabilmente un assembly caricato dinamicamente manca un assembly referenziato. Tale assembly deve essere nella directory bin dell'applicazione.

Usa questo codice per determinare cosa manca.

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.
}


Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché