専門家の皆様、私は msbuild を使用して Visual Studio プロジェクトの長いリストを作成しています。また、msbuild の出力を非表示にしている間、msbuild がジョブを実行している間、一部のキャラクターに基づいたステータスとアニメーションが表示されます。ここで、msbuild を使用してビルドし、待機アニメーションを表示するスクリプトを示します (きっと気に入るはずです...)。
$anim=@("|","/","-","\","|") # Animation sequence characters
$ReturnCode = @{}
$BuildStatus="Building $(ProjectName)"
$CursorTop=[Console]::CursorTop #// Cursor position on Y axis
$CursorLeft=$BuildStatus.Length #// Cursor position on X axis
Write-Host $BuildStatus -ForegroundColor Cyan
#// starting the MsBuild job in background.
$MsbJob = [PowerShell]::Create().AddScript(
{
param($MsbArgs, $Result)
& msbuild $MsbArgs | Out-Null
$Result.Value = $LASTEXITCODE
}
).AddArgument($MsbArgs).AddArgument($ReturnCode)
$async = $MsbJob.BeginInvoke() #// start executing the job.
#// While above script block is doing its job in background, display status and animation in console window.
while (!$async.IsCompleted)
{
foreach ($item in $anim) #// looping on array containing characters to form animation
{
[Console]::SetCursorPosition($CursorLeft + 5,$CursorTop) #//setting position for cursor
Write-Host $item -ForegroundColor Yellow
Start-Sleep -m 50
}
}
$MsbJob.EndInvoke($async)
ほとんどの場合、期待どおりに動作します。つまり、次のようなステータスが表示されます。
MyProject のビルド (キャラクターのアニメーション)。
しかし、突然、次のようになります。
発見された唯一の解決策:これを修正できたのは、コンソールの画面バッファー サイズ (コンソール プロパティ --> レイアウト: 画面バッファー サイズ) を 1024 に増やすことでした。そんなに壊れないで。
画面バッファに関する私の評価は正しいですか? または他の何かが壊れていますか?はいの場合、.psm1 スクリプト内から実際に画面バッファ サイズを増やす必要がありますか?
どんな助けでも本当に感謝しています。