1

我在使用 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

2012 年 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)
4

2 回答 2

1

我建议您添加一些简单的跟踪来尝试找出问题所在。

但是Write-Host "Checkpoint 1 $(get-date -DisplayHint Time)"在脚本的开头加上右边,然后把其他放在关键部分之间。

我的猜测是问题在于 Get-Process 花费的时间比您预期的要长。一种可能性是加载默认配置文件/模块需要很长时间。

值得一提的是,我们在 MSBuild/VS 项目中使用了 powershell 脚本并且没有这种问题。

于 2012-11-12T09:04:10.853 回答
-1

安装了 PowerShell 3.0,重新安装了 VS 2012,没有任何帮助。所以我只是格式化了磁盘 C 并安装了 Windows 8,现在它工作得很好:)

于 2012-11-20T12:03:34.587 回答