一时兴起,为了学习 PowerShell,我知道自己落后了,我决定编写一个超级简单的脚本来使用 MSBuild 清理代码中的一堆解决方案,然后用一组特定的参数构建它们。这是脚本:
$sourceDir = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent
$cleanArgs = '/t:clean /verbosity:q /nologo /P:Configuration=Debug'
$buildArgs = '/verbosity:q /nologo /P:Platform="Any CPU";Configuration=Debug'
$solutions = @("asdf.sln","qwer.sln","zxcv.sln","yuio.sln","hjkl.sln","nm.sln")
function buildWithArgs([string[]]$solutionsToBuild = @(), [string]$args = 'default')
{
Write-Host args: $args
foreach($sln in $solutionsToBuild)
{
& $env:WINDIR\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe "$sourceDir\$sln $args" | Out-Default
}
}
buildWithArgs $solutions $buildArgs
buildWithArgs $solutions $cleanArgs
现在,我的问题是函数“buildWithArgs”不尊重 $args 参数,当我运行或调试脚本时,无论我传入什么参数,该参数始终为空。但是,$solutionsToBuild 参数完美无缺。我有不正确的语法吗?即使我的 $cleanArgs 字符串格式不正确或未转义,我什至无法使该函数与“asdf”之类的简单字符串一起使用,因为当我运行它时 $args 始终为空。感谢您可以为肯定是一些小而愚蠢的错误提供任何帮助!