2013-03-15 56 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)" />