我在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总是启动,不明白为什么。任何帮助将不胜感激,欢迎任何想法!
P.S。我们团队中的其他人也没有这样的问题,所以这肯定是我身边的事情。这是完整的构建日志:
https://gist.github.com/4064296
12/11/12更新: 试图把检查点,正如我之前所说,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)
答案 0 :(得分:1)
我建议您添加一些简单的跟踪来尝试解决问题所在。
但是在脚本开头放了一个Write-Host "Checkpoint 1 $(get-date -DisplayHint Time)"
然后把其他人放在关键部分之间。
我的猜测是,问题在于Get-Process花费的时间比您预期的要长。 一种可能性是加载默认配置文件/模块需要很长时间。
对于它的价值,我们在MSBuild / VS项目中使用powershell脚本,并且没有这类问题。
答案 1 :(得分:-1)
安装PowerShell 3.0,重新安装VS 2012,没有任何帮助。所以我只是格式化了磁盘C并安装了Windows 8,现在效果很好:)