c# - tutorial - linq to entities




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

Aggiungendo il mio problema / soluzione specifici a questo in quanto questo è il primo risultato di questo messaggio di errore. Nel mio caso, l'errore è stato ricevuto quando ho distribuito una seconda applicazione all'interno della cartella della mia prima applicazione in IIS . Entrambi stavano definendo una stringa di connessione con lo stesso nome, con il risultato che l'applicazione figlia aveva un conflitto e, a sua volta, generava questo (per me) messaggio di errore non ovvio. È stato risolto aggiungendo:

<clear/>

nel blocco stringa di connessione dell'applicazione web figlio che ha impedito di ereditare le stringhe di connessione dei file web.config più in alto nella gerarchia, quindi sembra:

<connectionStrings>
  <clear/>
  <add name="DbContext" connectionString="MySERVER" providerName="System.Data.SqlClient" />
</connectionStrings>

Una domanda di overflow dello stack di riferimento che ha aiutato una volta che ho determinato cosa stava succedendo è Un'applicazione figlia eredita dal suo padre web.config? .

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, ricevo 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?


Altri suggerimenti sono tutti buoni. Nel mio caso, il problema era che la finestra di sviluppo era una macchina a 64 bit che utilizzava la posizione x86 di varie API, tra cui Silverlight .

Modificando la piattaforma di destinazione in modo che corrisponda al server a 32 bit in cui è stata distribuita l'applicazione Web, è stata rimossa la maggior parte degli errori relativi alla mancata possibilità di caricare uno o più dei tipi richiesti.


Avevo un .NET 4.0, ASP.NET MVC 2.0, un'applicazione web Entity Framework 4.0 sviluppata in Visual Studio 2010. Avevo lo stesso problema, che funzionava su un server Windows Server 2008 R2 ma non su un altro server Windows Server 2008 R2, anche se le versioni di .NET e ASP.NET MVC erano uguali, lanciando questo stesso errore come il tuo.

Sono andato a seguire il suggerimento di miko, quindi ho installato Windows SDK v7.1 (x64) sul server malfunzionante, quindi ho potuto eseguire! Dumpheap.

Bene, si è scoperto che l'installazione di Windows SDK v7.1 (x64) ha risolto il problema. Qualunque cosa mancasse la dipendenza doveva essere inclusa nell'SDK. Può essere scaricato da Microsoft Windows SDK per Windows 7 e .NET Framework 4 .


Come è stato menzionato prima, di solito è il caso di un assemblaggio che non è lì.

Per sapere esattamente quale assembly si manca, collegare il debugger, impostare un punto di interruzione e quando viene visualizzato l'oggetto eccezione, eseguire il drill-down sulla proprietà 'LoaderExceptions'. L'assemblea mancante dovrebbe essere lì.

Spero che sia d'aiuto!


Due possibili soluzioni:

  1. Si sta compilando in modalità Release ma si sta implementando una versione compilata più vecchia dalla directory Debug (o viceversa).
  2. Non hai la versione corretta di .NET Framework installata nel tuo ambiente di test.

Ho avuto lo stesso problema (ma sul mio locale) quando stavo cercando di aggiungere la migrazione di Entity Framework con la console di Package Manager.

Il modo in cui l'ho risolto è stato creando un'applicazione di console in cui Main () aveva il seguente codice:

 var dbConfig = new Configuration();
 var dbMigrator = new DbMigrator(dbConfig);
 dbMigrator.Update();

Assicurarsi che la classe Configuration sia la configurazione di migrazione del progetto in errore. Avrai bisogno di System.Data.Entity.Migrations per usare DbMigrator.

Imposta un punto di interruzione nell'applicazione ed eseguilo. L'eccezione dovrebbe essere catturata da Visual Studio (a meno che tu non abbia quel tipo di eccezione impostato per non interrompere la sessione di debug) e dovresti essere in grado di trovare le informazioni che stai cercando.

Il riferimento mancante nel mio caso era EFProviderWrapperToolkit.


Ho avuto un problema con automap. Nella cartella bin , il file automap.4net.dll era lì, ma per qualche ragione il file automap.xml e automap.dll non lo erano. Copiarli nella directory bin risolto il problema.


Ho modificato la proprietà della versione specifica di Refrences su false e questo mi ha aiutato.


Ho riscontrato questo problema anche quando creo un nuovo componente aggiuntivo di Microsoft Word con Visual Studio 2015. Il problema riguarda l'utilizzo di 2 versioni di MS Office, 2013 e 2016. Disinstalla MS Office 2013 e quindi funziona.


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


Impostare la modalità IIS a 32 bit su true, debug mode su true nel file di configurazione, eliminare la directory temp e resettare IIS risolve il problema temporaneamente e ritorna dopo un po 'di tempo.


Inizialmente ho provato il visualizzatore di log di Fusion, ma non è stato d'aiuto quindi ho finito con l'utilizzo di WinDbg con l'estensione SOS.

! dumpheap -stat -type Exception / D

Quindi ho esaminato FileNotFoundExceptions. Il messaggio nell'eccezione conteneva il nome della DLL che non si stava caricando.

NB, la / D fornisce risultati con collegamento ipertestuale, quindi fare clic sul collegamento nel sommario per FileNotFoundException. Questo farà apparire una lista delle eccezioni. Quindi fare clic sul collegamento per una delle eccezioni. Questo lo farà! Dumpobject that exceptions. Quindi dovresti solo essere in grado di fare clic sul link per Messaggio nell'oggetto eccezione, e vedrai il testo.


La soluzione era controllare la LoaderException: nel mio caso, alcuni dei file DLL mancavano.


Nel caso in cui nessuna delle altre risposte ti aiuti:

Quando ho avuto questo problema, è risultato che il mio servizio Windows è stato creato per una piattaforma x64 e inavvertitamente ho eseguito la versione a 32 bit di InstallUtil.exe. Quindi assicurati di utilizzare la versione corretta di InstallUtil per la piattaforma per cui hai costruito.


Questo ha funzionato per me. Aggiungilo nel tuo web.config

<system.web>
  <trust level="Full" />

Se si utilizza Entity Framework , provare a copiare i seguenti riferimenti localmente.

  • System.Data.Entity
  • System.Web.Entity

Modificare la proprietà "Copia locale" su "Vero" per questi riferimenti e pubblicare.


Sono in grado di risolvere questo problema contrassegnando "Copia Local = True" su tutti i file DLL di riferimento nel progetto, ricostruendo e distribuendo su un server di test.


Stavo aggiornando un sito web tramite FTP. Presumo che il sito Web fosse in uso e quando si tenta di aggiornare la cartella bin, un paio di file DLL devono essere stati bloccati e non aggiornati.

Lì ho visto la pagina di errore 500 e l'impostazione della modalità CustomErrors per essere disattivata, ho visto il messaggio di errore menzionato dall'OP.

Il problema era che non ho visto gli errori elencati nel programma FTP. Ho provato di nuovo quelli falliti falliscono e loro hanno caricato. L'ultimo file DLL aggiornato. Quindi il sito ha funzionato.


Una soluzione che ha funzionato per me consisteva nell'eliminare le cartelle bin / and obj / e ricostruire la soluzione.


Verificare che ciascun progetto sia configurato correttamente in Configuration Manager .

Analogamente al motivo di William Edmondson per questo problema, ho cambiato l'impostazione di Configuration Manager da "Debug" "Any CPU" a "Debug" ".NET". Il problema era che la versione ".NET" NON era configurata per costruire TUTTI i progetti, quindi alcune delle mie DLL non erano aggiornate (mentre altre erano attuali). Ciò ha causato numerosi problemi con l'avvio dell'applicazione.

La soluzione temporanea era di fare il suggerimento di Kenny Eliasson per pulire le directory \ bin e \ obj. Tuttavia, non appena ho apportato ulteriori modifiche ai progetti non di compilazione, tutto fallirebbe di nuovo.





entity-framework