2012-03-28 12 views
5

Questa domanda è diversa dalle domande pubblicate here e here anche se i titoli sono gli stessi.Errore MSB4018: l'attività "CreateRiaClientFilesTask" non è riuscita in modo imprevisto - Si è tentato di accedere a un AppDomain scaricato

Il problema si presenta a intermittenza. L'errore si verifica sempre se il progetto è stato pulito o è in fase di costruzione da una nuova verifica. Spingendo di nuovo immediatamente la build, di solito si ottiene la generazione successiva. Lo stacktrace che ottengo è:

error MSB4018: The "CreateRiaClientFilesTask" task failed unexpectedly. 
System.AppDomainUnloadedException: Attempted to access an unloaded AppDomain. 
    at System.IDisposable.Dispose() 
    at Microsoft.ServiceModel.DomainServices.Tools.CreateRiaClientFilesTask.GenerateClientProxies() 
    at Microsoft.ServiceModel.DomainServices.Tools.CreateRiaClientFilesTask.ExecuteInternal() 
    at Microsoft.ServiceModel.DomainServices.Tools.RiaClientFilesTask.Execute() 
    at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() 
    at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__1c.MoveNext() 

Il problema si verifica anche in modo intermittente durante il normale ciclo di modifica-build-esecuzione, e, a volte è necessario un riavvio da Visual Studio per farlo funzionare in queste occasioni.

Il problema si verifica sia in MSBuild e Visual Studio 2010. Ho tutti gli ultimi aggiornamenti installati (WCF RIA Services SP2). Si è verificato durante l'utilizzo degli strumenti di Silverlight 4 e l'aggiornamento a Silverlight 5 non ha risolto il problema. Il problema si verifica anche ancora in beta di VS 11.

non sono stato in grado di modificare l'ordine del costruire come descritto here (riferimento da here) come MSBuild si lamenta di una dipendenza circolare e Visual Studio dice che io non può fare riferimento a un progetto non Silverlight da uno Silverlight. Da quella pagina ho anche provato a seguire this link e ho cambiato la versione ToolsVersion predefinita da 2.0 a 4.0 nel registro.

Sto sicuramente utilizzando la versione a 32 bit di MSBuild, come cercando di utilizzare la versione a 64 bit non riesce di non aver per idratare il modello Entity Framework. Non sto usando l'opzione/m per costruirlo in parallelo.

Il progetto è stato inizialmente un progetto web (che ospita il sito che il controllo di Silverlight vive, servizi RIA, e contiene la logica di business) e un progetto di Silverlight. La modifica di questo in 3 progetti (con una libreria di classi contenente la logica) non fa alcuna differenza.

La prossima cosa che sto pensando di provare è avere il progetto che ospita il servizio RIA separato da quello che ospita l'app Silverlight, ma non è l'ideale per noi (e non sono nemmeno sicuro che funzionerà).

+0

Per la cronaca: una domanda strettamente correlata è http://stackoverflow.com/q/4450340/223837. –

risposta

0

Ho trovato una soluzione a questo problema che ha risolto il problema su ogni server e client da cui l'ho eseguito.

Il layout del progetto iniziale aveva un progetto Web che fungeva da host per i componenti RIA e l'app Silverlight stessa. Ho creato una libreria di classi per i servizi RIA, ho trasferito tutta la mia logica RIA e ho aggiunto un riferimento ad esso dal Web Project. Quindi ho aggiornato il collegamento RIA in Silverlight per indicare questo nuovo progetto.

Ho dovuto aggiungere la seguente riga nel file app.xaml.cs di Silverlight in modo che l'autenticazione funzionasse.

((WebAuthenticationService)WebContext.Current.Authentication).DomainContext 
    = new RiaNamespace.AuthenticationDomainContext(); 
0

Ho fatto esattamente la stessa cosa a un paio di miei progetti. Ho trovato (dedotto davvero) che era correlato al mio percorso di aggiornamento di RIA e Silverlight. Ho una nuova macchina, con tutti gli aggiornamenti e ancora ANCORA. Tuttavia, quando ho ricreato i progetti da zero (copiando i file e le impostazioni, NON le informazioni sull'assemblaggio "generate"), il problema è andato via.

Non una risposta definitiva che ci si aspetterebbe suppongo, e ad essere onesti, ricreare la soluzione da zero è stato un dolore. Sospetto (e l'unica conclusione che potrei portare) era legata a qualche dichiarazione GAC o ad un'altra che chiedeva una versione precedente del framework RIA.

avevo installato una versione di RIA e codificati usando, e c'erano un paio di aggiornamenti Silverlight che è accaduto in rapida successione durante questo tempo. Da allora non ho avuto problemi.

+0

La stessa esperienza qui: ce l'avevamo su un server di build, e se ne andò solo quando ci siamo spostati su uno nuovo. Ce l'ho sul mio sistema di sviluppo (ma raramente), e sono abbastanza sicuro che andrà via una volta che mi trasferisco in una nuova. Ancora, fastidioso. –

1

Questa eccezione mi sta facendo impazzire! Ho anche provato a pulire la cartella temporanea di ASP.Net, a pulire tutti i progetti nella soluzione, a eseguire VS come amministratore, ecc., Ma ho ancora questo problema. La mia soluzione al problema è la ricostruzione due volte del progetto Web.

3

Nel mio caso, questa eccezione è stata causata dall'applicazione anti-virus di McAffee. La disabilitazione della funzione "On-Access" (o "On-Demand") ha risolto il problema.

Ho avuto un problema simile in passato con Microsoft Security Essentials che è stato risolto aggiungendo le esclusioni di seguito. Sospetto che sia l'esclusione della cartella "File temporanei ASP.Net" che sarebbe necessaria per risolvere il problema qui.

esclusi i file e le posizioni

  • C: \ Temp \ Default \ NuGet.exe
  • C: \ Temp \ NativeImage \ NuGet.exe
  • C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files
  • NuGet.exe

Escludi d Processi

  • C: \ Program Files (x86) \ File comuni \ Microsoft Shared \ devserver \ 11.0 \ WebDev.WebServer40.EXE
  • C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ devenv.exe
  • C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ Microsoft.VisualStudio.Web.Host.exe
  • C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ MSBuild.exe
+0

Questo lo ha risolto anche per me anche se invece di escludere le cose ho rimosso McAfee e installato qualcos'altro. – BenCr

+0

Questo lo ha risolto anche per noi. Tuttavia, non è stato possibile disabilitare in modo permanente McAfee o modificare le esclusioni a causa dei criteri aziendali e abbiamo trovato un modo per spostare i "file ASP.Net temporanei" in una posizione diversa. Sto aggiungendo una risposta separata per questo. –

0

Rimuovere o disattivare il tuo virus-scanner durante la compilazione. Ha funzionato anche per me!

1

Nel nostro caso ci siamo imbattuti nello stesso problema riportato in un'altra risposta a questa stessa domanda (https://stackoverflow.com/a/14125687/223837): McAfee ha interferito stranamente con i file in "File temporanei ASP.NET". Ma nel nostro caso non potremmo disabilitare McAfee o modificare le cartelle escluse a causa dei criteri aziendali.

Ma abbiamo trovato una soluzione diversa: quello che abbiamo fatto è aggiornare il file machine.config (nel nostro caso C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config), e aggiungere un elemento <compilation tempDirectory="..."/>, come segue:

<configuration> 
    <!-- snip --> 
    <system.web> 
     <!-- snip --> 
     <compilation tempDirectory="c:\A_FOLDER_THAT_IS_SKIPPED_BY_MCAFEE\TempASP.NETFiles\"/> 
    </system.web> 
    <!-- snip --> 
</configuration> 

(L'ispirazione per questa direzione soluzione è venuto da una risposta a una domanda correlata: https://stackoverflow.com/a/1255303/223837.)

+0

Grmph. Questa soluzione sembrava aiutare per un po 'di build, ma ora abbiamo due build falliti di fila. Quindi il problema è tornato ... –

0

Ho avuto lo stesso problema.

Ho appena cambiato il numero di "Versione di assemblaggio" e il mio progetto è stato OK.