2013-02-20 14 views
11

Visualizzo occasionalmente il seguente errore (apparentemente casuale) nella mia applicazione web. Stiamo eseguendo Windows Server 2008R2, IIS 7.5, MVC3, .NET 4.5.Vedere periodicamente l'errore ASP.NET CS0656: membro richiesto del compilatore mancante

Compiler Error

E 'lo stesso errore ogni volta: CS0656: Mancare compilatore membro 'Microsoft.CSharp.RuntimeBinder.Binder.BinaryOperation' richiesto

Quando si verifica questo errore, si può prendere qualsiasi cosa, da un riavvio del pool di applicazioni, per reinstallare la nostra applicazione stessa, per risolverlo.

L'errore si verifica sulle immagini VM nuove di zecca (nessuna installazione precedente del nostro software), così come su macchine su cui in precedenza è stato installato il nostro software. L'errore può verificarsi durante la prima esecuzione dell'applicazione o quando l'applicazione è rimasta abbastanza a lungo da consentire al pool di applicazioni IIS di riciclare il processo di lavoro (così sembra).

Questo sta diventando molto difficile da gestire, poiché ho fatto un sacco di ricerche su questo errore e ho provato più soluzioni, senza fortuna. Inoltre, la frequenza casuale a cui si verifica l'errore ha reso molto difficile la risoluzione dei problemi. Qualsiasi comprensione di questo problema, o idee su possibili soluzioni, sarebbe molto apprezzata. Sono disposto a provare quasi nulla a questo punto.

+0

1) È possibile collegare un debugger a una delle macchine virtuali di test e bloccarlo? 2) Stai usando il DLR? Guardando attraverso l'origine e la documentazione di BCL, sembra che il nome del tipo sia associato a operazioni dinamiche. O forse è l'uso del DLR da parte di MVC? –

+0

È possibile verificare quale versione di Microsoft.CSharp.dll è utilizzata (determinare il percorso con uno strumento come procexp), aprirlo utilizzando uno strumento come .NET Reflector e verificare che il metodo statico di BinaryOperation sia presente? Potrebbe trattarsi di un problema di versione (il compilatore si aspetta una versione più recente di Microsoft.CSharp.dll) –

+0

Stai utilizzando le funzionalità di linguaggio dinamico C#? E comunque sembra un CLR corrotto. –

risposta

0

Try Forest Cheng Answer:

Quale versione tuo .NET Framework è? I componenti di runtime di ASP.NET MVC 3 richiedono .NET Framework versione 4 e Visual Studio 2010 o Visual Web Developer 2010 Express. Vuoi maggiori informazioni, per favore guarda ASP.NET MVC 3 Release Notes.

compilatore CS0656 errore può essere causato dai problemi seguire:

  1. L'installazione di Common Language Runtime è danneggiato.

  2. Si ha un riferimento a un assieme che definisce un tipo che si trova anche nel Common Language Runtime. Tuttavia, il tipo di assembly non è definito nel modo in cui il compilatore C# si aspetta.

Controllare quindi i riferimenti per assicurarsi di utilizzare la versione corretta del Common Language Runtime.

0

Noi usato per avere questi errori di compilazione che si verificano in modo casuale nel giorno molto tempo fa con .net 1 e oltre. Ciò ha richiesto la cancellazione del contenuto della cartella temporanea di asp.net e la ricerca di altre dll rogue che erano in giro, anche all'interno di una cache di Visual Studio. In generale, lo svuotamento della cartella temporanea asp.net lo farà.

Assicurati di trovare tutte le DLL - la cartella bin troppo ovviamente, e ricorda che le DLL sono eseguite da una directory shadow.Questo è il motivo per cui ricordo (anche da una lunga memoria lontana) che esiste una connessione all'appadominio predefinito in cui sono caricati gli assembly, specialmente se poi si carica "lo stesso assembly" ma da un percorso file differente.

Problemi correlati