我让TeamCity为ASP.NET MVC 3应用程序运行MSBuild任务。现在每隔一段时间(看似随机)抛出“ASPNETCOMPILER:错误ASPRUNTIME:已经卸载了运行该线程的应用程序域。”它发生在MSBuild执行“MvcBuildViews”并运行aspnet_compiler.exe时。
现在我知道aspnet_compiler.exe(http://msdn.microsoft.com/en-us/library/ms229863(vs.80).aspx)有一个“-errorstack”开关可以给我关于这个错误的堆栈跟踪信息,但似乎AspNetCompiler Task没有公开设置这个属性的可能性(http://msdn.microsoft.com/en-us/library/ms164291.aspx)。
所以我的问题是 - 有没有办法将任何自定义属性传递给现有的MSBuild任务,或者我必须在MSBuild之外手动运行aspnet_compiler.exe以启用-errorstack功能?
答案 0 :(得分:3)
我们找到了此错误的原因(但实际上并不是如何向MSBuild任务添加自定义属性)。当构建服务器内存不足时,似乎发生了这种异常。
答案 1 :(得分:3)
您可以使用csproj文件中的Exec
MSBuild任务来实现此目的。例如原始任务:
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
变为:
<Exec Command="$(MSBuildFrameworkToolsPath)\aspnet_compiler.exe -v temp -errorstack -p $(WebProjectOutputDir)" />