[英]Why do all Pre-build or Post-build events in Visual Studio fail with exit code 1?
[英]Visual Studio 2012 slow build because of pre-build and post-build events
我在使用Visual Studio 2012構建時遇到麻煩,它運行非常慢。 前段時間效果很好,我不知道發生了什么。 我啟用了診斷構建輸出,並看到了以下內容:
3>Target Performance Summary:
...
3> 1093 ms ResolveComReferences 1 calls
3> 2741 ms ResolveAssemblyReferences 1 calls
3> 3725 ms CoreCompile 1 calls
3> 314117 ms PreBuildEvent 1 calls
3>
3>Task Performance Summary:
...
3> 1092 ms ResolveComReference 1 calls
3> 2741 ms ResolveAssemblyReference 1 calls
3> 3724 ms Csc 1 calls
3> 314117 ms Exec 1 calls
3>
3>Build succeeded.
3>
3>Time Elapsed 00:05:22.93
預構建事件:
Powershell -File "$(ProjectDir)Prepare4Tests.ps1"
腳本文件:
# Close all IE instances
if($env:COMPUTERNAME -ne 'W8ALEXAB')
{
Get-Process | Where { $_.Name -Eq 'iexplore' } | Kill;
}
# Delete test files generated by agent that are more than 7 days old.
$paths = @("C:\Users\tsservice\AppData\Local\VSEQT\QTAgent", "C:\Windows\ServiceProfiles\NetworkService\AppData\Local\VSEQT\QTController");
foreach($path in $paths)
{
if(Test-Path $path)
{
$items = @(Get-ChildItem $path | Where {$_.lastwritetime -lt (Get-date).AddDays(-8)});
for($i = 0; $i -lt $items.Length; $i++)
{
$itemPath = join-path $path $items[$i] -Resolve;
"Deleting item: " + $itemPath;
Remove-Item $itemPath -force;
}
}
}
另一個包含執行構建后事件的項目的相同問題,該事件執行另一個powershell腳本。
如果我直接從命令提示符啟動腳本,它將運行很快,沒有問題。 同樣在重建時,netstat.exe總是啟動,不知道為什么。 任何幫助將不勝感激,任何想法都歡迎!
PS另外,我們團隊中的其他人也沒有這樣的問題,所以這絕對是我這邊的事情。 這是完整的構建日志:
https://gist.github.com/4064296
12/12/11更新:正如我之前說過的,試圖放置檢查點,powershell腳本本身正在發揮作用
3> Task Parameter:Command=Powershell -File "D:\Projects\NGNMS\Dev\NMSClient\NMSClient.UT\Prepare4Tests.ps1" (TaskId:72)
3> Powershell -File "D:\Projects\NGNMS\Dev\NMSClient\NMSClient.UT\Prepare4Tests.ps1" (TaskId:72)
3> Checkpoint 1 11/12/2012 13:08:07 (TaskId:72)
3> Checkpoint 2 11/12/2012 13:08:07 (TaskId:72)
3> Checkpoint 3 11/12/2012 13:08:07 (TaskId:72)
3>Done executing task "Exec". (TaskId:72)
我建議您添加一些簡單的跟蹤以嘗試找出問題所在。
但是在腳本開始處放一個Write-Host "Checkpoint 1 $(get-date -DisplayHint Time)"
,然后將其他放置在關鍵部分之間。
我的猜測是,問題在於Get-Process花費的時間比您預期的要長。 一種可能是加載默認配置文件/模塊會花費很長時間。
對於什么是價值,我們的MSBuild / VS項目中使用PowerShell腳本並沒有這種問題。
安裝了PowerShell 3.0,重新安裝了VS 2012,沒有任何幫助。 因此,我只是格式化了磁盤C並安裝了Windows 8,現在它的效果很好:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.