2013-03-15 28 views
5

Ho TeamCity in esecuzione attività MSBuild per un'applicazione ASP.NET MVC 3. Ora ogni tanto (apparentemente in modo casuale) genera "ASPNETCOMPILER: errore ASPRUNTIME: il dominio dell'applicazione in cui è stato eseguito il thread è stato scaricato.". Succede quando MSBuild esegue "MvcBuildViews" ed esegue aspnet_compiler.exe.Aggiunta di attributi personalizzati a MSBuild Compito

Ora so che c'è un interruttore "-errorstack" per aspnet_compiler.exe (http://msdn.microsoft.com/en-us/library/ms229863(vs.80).aspx) che può darmi Analisi dello stack informazioni su questo errore, ma sembra che AspNetCompiler Task non espone la possibilità di impostare questo attributo (http://msdn.microsoft.com/en-us/library/ms164291.aspx) .

Quindi la mia domanda è: esiste un modo per passare qualsiasi attributo personalizzato a un'attività MSBuild esistente o devo eseguire manualmente aspnet_compiler.exe all'esterno di MSBuild per abilitare la funzionalità -errorstack?

+0

mi sono imbattuto in un suggerimento che può aiutare nella vostra situazione - E 'probabilmente la pena di provare. In Visual Studio, vai su Strumenti -> Opzioni -> Progetti e soluzioni (seleziona la casella "Mostra tutte le impostazioni" se non riesci a trovarlo) -> "Crea ed esegui". Quindi impostare la verbosità di output su Diagnostica. Apri la finestra di output (Ctrl-Alt-O) ed esegui una build. –

+0

Thx per il suggerimento David, nel nostro caso però il problema stava accadendo su un server di compilazione, quindi la diagnostica extra in Visual Studio non sarebbe stata di grande aiuto. Comunque penso che abbiamo trovato un colpevole, scriverò una risposta qui sotto. Saluti. –

risposta

3

Abbiamo trovato un motivo per questo errore (ma non in realtà come aggiungere attributi personalizzati alle attività di MSBuild). Sembra che questa eccezione si verifichi quando i server di build stanno per esaurire la memoria.

3

È possibile ottenere ciò utilizzando l'attività MSBuild Exec nel file csproj. Per esempio l'attività originale:

<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" /> 

diventa:

<Exec Command="$(MSBuildFrameworkToolsPath)\aspnet_compiler.exe -v temp -errorstack -p $(WebProjectOutputDir)" /> 
Problemi correlati