将自定义属性添加到MSBuild任务

时间:2013-03-15 11:38:59

标签: asp.net-mvc msbuild msbuild-task aspnet-compiler

我让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功能?

2 个答案:

答案 0 :(得分:3)

我们找到了此错误的原因(但实际上并不是如何向MSBuild任务添加自定义属性)。当构建服务器内存不足时,似乎发生了这种异常。

答案 1 :(得分:3)

您可以使用csproj文件中的Exec MSBuild任务来实现此目的。例如原始任务:

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

变为:

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