2013-03-15 57 views
5

我有TeamCity为ASP.NET MVC 3应用程序运行MSBuild任务。现在每隔一段时间(看似随机)它会抛出“ASPNETCOMPILER:错误ASPRUNTIME:线程运行的应用程序域已被卸载。”它发生在MSBuild执行“MvcBuildViews”并运行aspnet_compiler.exe时。向MSBuild添加自定义属性任务

现在我知道有一个“-errorstack”开关aspnet_compiler.exe(http://msdn.microsoft.com/en-us/library/ms229863(vs.80).aspx),可以给我堆栈跟踪有关该错误的信息,但似乎AspNetCompiler任务不公开可能设置该属性(http://msdn.microsoft.com/en-us/library/ms164291.aspx) 。

所以我的问题是 - 有没有办法将任何自定义属性传递给现有的MSBuild任务,或者我必须在MSBuild之外手动运行aspnet_compiler.exe来启用-errorstack功能?

+0

我碰到一个提示,可在您的情况帮 - 这可能是值得一试。 在Visual Studio中,转到工具 - >选项 - >项目和解决方案(如果找不到它,请选中“显示所有设置”框) - >“生成并运行”。然后将输出详细程度设置为诊断。打开输出窗口(Ctrl-Alt-O)并执行构建。 – 2013-03-21 23:25:33

+0

针对提示David的Thx,在我们的案例中,虽然问题发生在构建服务器上,但只有Visual Studio中额外的Diagnostics才会有太多帮助。无论如何,我认为我们已经找到了一个罪魁祸首,我会在下面写一个回应。干杯。 – 2013-03-22 10:00:06

回答

3

我们发现了这个错误的原因(但并不真正如何将自定义属性添加到MSBuild任务)。当构建服务器内存不足时,似乎发生此异常。

3

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

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

变为:

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