“Impossibile caricare il file o l’assembly ‘XXX.YYY’ o una delle relative dipendenze. Impossibile trovare il file specificato.”

Ho una .netta soluzione di visual studio con un numero di progetti (librerie di classi e di una web application).

Ho fatto qualche refractoring che trasferisce file tra i progetti, creati nuovi progetti, eliminati quelli non utilizzati e rinominato alcuni progetti esistenti.

La soluzione costruisce senza un problema, ma quando ho eseguito l’applicazione web, si verifica l’eccezione seguente:

“Impossibile caricare il file o l’assembly ‘XXX.YYY’ o una delle relative dipendenze. Impossibile trovare il file specificato.”

Un progetto che si chiama XXX.YYY, che è stata eliminata la refractoring emessa una dll chiamata XXX.YYY. Ma questo non è utilizzata in qualsiasi punto dell’applicazione. Ho eliminato le applicazioni web obj directory e la cartella bin e ricostruire, ma si verifica ancora.

Qualcuno ha delle idee, quando questo potrebbe essere in corso, eventuali consigli??

AGGIORNAMENTO:

Aggiornamento sul mio problema. Ho preso il codice posto a un altro computer e corse da lì ha costruito e viene eseguito correttamente, senza che questo problema si verifichi. Quindi questo mi fa pensare che il problema è con il mio PC, piuttosto che il codice di base. Forse c’è qualcosa nella cache sul mio PC. Ho fatto cancellare il mio file temp in “C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET File”, ma senza fortuna.

Così qualsiasi altra cosa che potrebbe essere memorizzato nella cache o qualsiasi altro motivo che si verificano sul mio PC.

ULTERIORE AGGIORNAMENTO

Un altro aggiornamento su questo. Ho eseguito lo stesso codice su altri sviluppatori macchina e lui non ha un problema di esecuzione. Così deve essere sicuramente qualcosa sulla mia macchina! L’unico diverso sulla nostra macchina, è che io sono in esecuzione IIS7 con l’app app piscina in modalità classica. L’altro sviluppatore è in esecuzione IIS6.

2 nuove informazioni. In primo luogo, nel mio httpmodules nel mio web.config, ho per rimuovere un modulo http personalizzato, prima di aggiungerlo. Gli altri sviluppatori non hanno a che fare questo. In secondo luogo, sono stato in grado di risolvere i “impossibile caricare il file o l’assembly ‘XXX.YYY’ o una delle relative dipendenze” problema tramite un “hack” che è solo una soluzione a breve termine con la creazione di una libreria di classi nel progetto denominato XXX.YYY e tra le classi che si sta cercando, che sono tutti i controlli personalizzati ie. eredita da System.Web.Interfaccia utente.Webcontrol.WebControl.

Eventuali ulteriori pensieri….

  • Hai provato usando il riflettore?
  • Hai provato a pulire la vostra ASP.NET directory dei file temporanei? C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET File
  • provato a cancellare i file temporanei, ma ancora senza fortuna
  • sì ho usato il riflettore su tutte le dll nella directory bin dell’applicazione web e non riusciva a trovare alcun riferimento a XXX.YYY.
  • Avete provato a usare findstr nella cartella del progetto, solo per vedere chi ha un riferimento a xxx.yyy? cd <progetto di base dir>; findstr /I /S /L XXX.YYY – Si otterrà alcuni dei rifiuti per la console, perché almeno un file binario ha un riferimento a quel nome. Se c’è troppa spazzatura, fare 2 passaggi, uno come detto in altro passaggio aggiungi /M . Si noti che il /L significa che la ricerca è letterale.
  • Vedi aggiornamento in questione
  • Dare CCleaner una prova sulla cattiva macchina. Si pulisce le directory temp, cronologia internet, etc. Si dovrà ripetere il login ai siti web una volta che si avvia comunque. www.piriform.com/ccleaner
  • grazie per il suggerimento, ma senza fortuna con questo.
  • OK… ora sono molto curioso perché questo sta accadendo. 🙂 1) si dispone di un attivo anti-virus in esecuzione su una macchina rotta? Non Symantec o McAfee spero. 🙂 Se non, utilizzare uno dei rispettabile scanner online e quindi controllare il vostro codice di problema ancora se nulla è trovato/riparato. 2) È possibile disinstallare Visual Studio,.Net runtime che è interessato da questo problema e poi reinstallare? Abbiamo avuto un problema simile via del ritorno, quando il primo .Net runtime sono stati trovati 2 modi per risolvere le cose. 1 è il metodo che ho descritto, 2 è una reinstallazione completa di windows, VS, ecc…
  • Ho avuto un dramma in passato, dove sono stato a fare riferimento a una VB6 DLL di ActiveX per la quale ho avuto l’origine del progetto per. Quando si muove il progetto su un altro PC o in movimento ‘cose’ in giro, mi piacerebbe ricostruire la DLL in VB6IDE e ricollegare la DLL per i riferimenti in VS. Non sono sicuro se questo si riferisce troppo, solo i miei due centesimi dal momento che mi è stato sempre lo stesso errore per qualche strano motivo.
  • Si prega di vedere un ulteriore aggiornamento alla domanda. L’anti virus è lo stesso su entrambe le macchine. Posso guardare la disinstallazione del runtime, ma la speranza non è venuto per questo! Chiedo se la sua qualcosa di Windows 7 correlate.
  • Scusa Niall, questa è l’ultima delle mie idee… ha a Che fare con il modo in Win7 gestisce le autorizzazioni. Io non sono un .Net riduttore. Questo è venuto da un conoscente che ha avuto a che fare con un problema simile. Cerca in tutti i luoghi, la rottura di una macchina in cui le assemblee sono memorizzati e assicurarsi che essi sono coerenti in materia di autorizzazioni. Utilizzare cacls <nomefile>. Lui mi dice che le cose in C:\WINDOWS\Microsoft.NET\Framework che sono i file di configurazione dovrebbe avere almeno il permesso di cambiamento e di Dll almeno autorizzazioni di lettura per il NT account di SISTEMA e l’utente per il server web. La pena dare un’occhiata comunque.
  • Hai provato il mio suggerimento? Non dovrebbe essere difficile capire qualsiasi riferimento a un assembly problema. L’idea è di utilizzare fuslogvw per individuare ciò che gli assemblaggi sono in uso. Quindi, utilizzare ildasm su ogni assembly caricati. Vi dirà che cosa assemblee sono di riferimento nel manifesto di sezione. Penso che valga la pena di provare, se non l’hai

InformationsquelleAutor amateur | 2011-01-01

 

8 Replies
  1. 5

    Ci sono due possibili ragioni.

    1) Quando si esegue la tua webapp, si utilizza ancora il vecchio assemblee da qualche parte sul vostro computer. Il tuo vecchio assemblee sono state di riferimento la vecchia assemblea “XXX.YYY”.

    2) L’ultima binario è costruito è ancora riferimento al vecchio assemblea “XXX.YYY”.

    Per scoprire cosa assemblee del webapp utilizzando, se si esegue un debugger, è possibile trovare facilmente dall’uscita di windows. Dovrebbe essere il primo paio di righe di output. Un altro modo per scoprirlo è quello di aprire il Modulo di windows in VS.NET IDE durante il debug.

    Se non è possibile eseguire il debug, per qualche ragione, o si hanno problemi a collegare un debugger, un altro modo più semplice per farlo è quello di utilizzare fuslogvw. Ti dà la posizione esatta di tutti correttamente caricato assemblis nonché le assemblee che non è riuscito a caricare. Si prega di assicurarsi che si esegue il fuslogvw come Amministratore in Windows 7.

    Dopo scoprire che cosa assemblee del webapp caricato correttamente, si può fare ildasm su quelle assemblee per vedere che cosa le assemblee sono il riferimento. È necessario controllare uno per uno, purtroppo.

    La mia ipotesi è che alcuni dei vostri caricato correttamente assemblee sono in realtà provenienti da qualsiasi parte del ASP.NET cache o GAC.

    • +1 per un’educazione. Io non conoscevo fuslogvw.
    • Volevo anche ricordare fusione logger, ma non riuscivo a ricordare il nome dello strumento.
  2. 1

    basta controllare i progetti di costruire configurazione.. se c’è un 64 bit dll compilata i riferimenti e il progetto principale è a 32 bit (o qualsiasi cpu e la tua macchina è a 32 bit), o viceversa, si wil ottenere questo errore

    • non che passi un BadImageFormat l’eccezione, invece?
    • sì.. è con questa descrizione “impossibile caricare il file o l’assembly ‘XXX.YYY, Version=1.0.XXX, Culture=neutral, PublicKeyToken=null’ o una delle relative dipendenze.”
  3. 1

    Fare ricerca della soluzione per il testo “XXX.YYY” e ” cancella tutte le occorrenze. Forse avete qlc di sinistra nel web.file di configurazione.

    Inoltre è possibile controllare il *.csproj file se la soluzione di ricerca non trova nulla. Sono sostanzialmente dei file di testo, quindi non ci dovrebbe essere alcun problema di rimuovere i riferimenti.

    • provato a cercare la soluzione completa (tutti i file) per XXX.YYY, ma senza fortuna trovare tutti i riferimenti. grazie per il vostro input
  4. 1

    Utilizzare il Dependency Walker (dipende) su tutti i file Exe e Dll per vedere quale è la dipendenza che è mancante. Si consiglia di eseguire dipende dalla directory di lavoro del progetto per i migliori risultati.

    Una volta che si sa che EXE/DLL è il colpevole, andare nelle impostazioni per il progetto e vedere se il lamentato di dipendenza è detto c’è.

    EDIT: un’Altra cosa si è verificato anche a me pochi minuti fa…
    Se una qualsiasi delle dipendenze sono “bloccato” perché essi sono stati contrassegnati come scaricato da qualche MS tardware (Quando si DL con Inet explorer per esempio) che possono impedire il codice eseguibile dal carico. Guarda le proprietà del file eseguibili (DLL/EXE) con Windows Explorer e vedere se hanno un pulsante sblocca nella prima pagina. Se è così, fare clic su tale pulsante.
    Mi ci è voluto qualche tempo per capire un po ‘ indietro, speriamo che vi aiuterà.

    • Utilizzando esplora risorse di windows, ho cliccato sul diritto di tutte le dll nella directory bin e visualizzare le proprietà. Non ho visto bloccare/sbloccare ovunque. Dove posso vedere se la sua in merito a questo? Non ho usato la Dependency Walker prima così io sono novizio di come questo lavoro. Posso aprire ogni dll nel mio bin con esso? (Nota: la directory bin è che l’applicazione web, non ho bisogno di farlo per tutte le librerie di classi? Ho 30+!)
    • Dependency Walker risolve la dipendenza DLL importazione e l’esportazione della tabella di PE quanto ne so. A meno che non sia l’utilizzo di alcune DLL non gestita, non vedo come dependency walker andando per aiutare. È l’ultima dependency walker può camminare attraverso il riferimento di montaggio troppo?
    • Collins: non C’è nessun blocco, solo sbloccare. Se non si vede si dovrebbe essere OK.
    • Kwok: ho usato Dependency Walker in una situazione simile e ha risolto i problemi. Non so come funziona, ma ha funzionato per me.
  5. 1

    Abilitare la registrazione Diagnostica per la generazione di output (Strumenti -> Opzioni -> Costruire E Esegui -> Registro di Output verbosità -> Diagnostica) e Costruire la soluzione e vedere da dove Visual Studio raccoglie le dll (somedll.dll versione xxx.aa). Ora eseguire l’Applicazione e vedere dove il runtime è il tentativo di risolvere la dll. (Windbg è un’opzione).

  6. 0

    Si sono semplicemente manca una dipendenza. E ‘ probabilmente una situazione come Progetto ha un riferimento al Progetto B, che ha un riferimento al Progetto C. le Vostre directory di output è manca DLL per Progetto C.

    • Ma se questo è il caso, la soluzione non sarebbe costruire – corretto? La soluzione è la costruzione di ok.
    • Non necessariamente. Tutti i progetti sono nella stessa soluzione, in modo che ogni progetto ha i suoi riferimenti necessari e tutti sono costruiti in ordine necessario per costruire le dipendenze. Per la pubblicazione di una app, come lungo come la cartella bin contiene tutte le Dll necessarie quindi l’app viene eseguito, ma se una singola DLL mancante, poi vedrai che il problema si sta verificando. Sei la pubblicazione dell’applicazione di IIS o semplicemente di debug in VS?
    • Interessante. Io sono in esecuzione sul mio locale IIS7 su pc con windows 7. Dovrebbe questa materia?
  7. 0

    Grande notizia che mi ha risolto il problema!!! Ho dovuto reinstallare il mio .net runtime environment. Ho eliminato anche i siti da IIS e readded nuovamente il sito. Quando l’ho fatto, il problema non si e sito ran.

    Un grande grazie a tutti per il loro aiuto e assistenza, molto apprezzato. Tutti i consigli e aiuto guidato me nella direzione di risolvere questo!

  8. 0

    Andare a References in Solution Explorer in Visual Studio. Selezionare l’assemblea che si è sempre lamentato. Selezionare e andare a View opzione del menu e selezionare Property Window in fondo. Mentre l’assemblea è selezionato, visualizzare le proprietà nella finestra delle proprietà di windows e cercare Copy Local valore. Se il valore è impostato a False, impostare True. Costruire la soluzione e pubblicarlo. Dovrebbe risolvere il problema.

Lascia un commento