Visual Studio 2012由于预构建和后构建事件而构建缓慢

时间:2012-11-11 10:50:10

标签: powershell build visual-studio-2012 post-build-event 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总是启动,不明白为什么。任何帮助将不胜感激,欢迎任何想法!

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)

2 个答案:

答案 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,现在效果很好:)