我正在尝试使用 psake 为我们公司在 .NET 3.5 中的 C# 项目创建构建脚本,但是当我运行它时,它失败并出现错误
default parameter specifiers are not permitted
我用谷歌搜索,看起来这是 .NET 3.5 的问题,它不允许函数中的默认参数。
然而奇怪的是,用 msbuild.exe 构建的同一个项目成功了。我试图将 psake 的 $framework 变量设置为 '3.5x86' 和 '3.5x64' 但这些都没有帮助。
您是否知道 psake 有什么问题,或者我是否缺少一个秘密变量?
我的psake脚本:
$scriptDir = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent
$framework = '3.5x86'
$serverSln = $scriptDir+'\..\Server\Server.sln'
$clientSln = $scriptDir+'\..\Client\Client.sln'
$outDirServer = $scriptDir+'\..\Binaries\Server'
$outDirClient = $scriptDir+'\..\Binaries\Client'
task default -depends Full
task Full -depends Clean, BuildServer, BuildClient #, BuildAccs, DeployRelease
task BuildServer {
#Framework '3.5'
exec { msbuild $serverSln /t:Build /p:Configuration=Release /v:quiet }
}
task BuildClient {
#Framework '3.5'
exec { msbuild $clientSln /t:Build /p:Configuration=Deploy /v:quiet }
exec { msbuild $clientSln /t:Build /p:Configuration=Release /v:quiet }
}
task Clean {
Write-Host Cleaning
if (Test-Path $outDirClient)
{
rd $outDirClient -rec -force | out-null
}
if (Test-Path $outDirServer)
{
rd $outDirServer -rec -force | out-null
}
}
脚本输出:
$scriptDir = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent
$framework = '3.5x86'
$serverSln = $scriptDir+'\..\Server\Server.sln'
$clientSln = $scriptDir+'\..\Client\Client.sln'
$outDirServer = $scriptDir+'\..\Binaries\Server'
$outDirClient = $scriptDir+'\..\Binaries\Client'
task default -depends Full
task Full -depends Clean, BuildServer, BuildClient #, BuildAccs, DeployRelease
task BuildServer {
#Framework '3.5'
exec { msbuild $serverSln /t:Build /p:Configuration=Release /v:quiet }
}
task BuildClient {
#Framework '3.5'
exec { msbuild $clientSln /t:Build /p:Configuration=Deploy /v:quiet }
exec { msbuild $clientSln /t:Build /p:Configuration=Release /v:quiet }
}
task Clean {
Write-Host Cleaning
if (Test-Path $outDirClient)
{
rd $outDirClient -rec -force | out-null
}
if (Test-Path $outDirServer)
{
rd $outDirServer -rec -force | out-null
}
}