42 lines
2 KiB
PowerShell
42 lines
2 KiB
PowerShell
param(
|
|
[string]$MSBuildPath,
|
|
[switch]$Test
|
|
)
|
|
|
|
$ErrorActionPreference = 'Stop'
|
|
Set-StrictMode -Version Latest
|
|
Push-Location $PSScriptRoot
|
|
try {
|
|
if (!$MSBuildPath) {
|
|
$command = Get-Command MSBuild.exe -ErrorAction SilentlyContinue
|
|
if ($command) { $MSBuildPath = $command.Source }
|
|
else {
|
|
$rider = Get-ChildItem "${env:ProgramFiles}/JetBrains" -Filter 'JetBrains Rider *' -Directory -ErrorAction SilentlyContinue |
|
|
Sort-Object Name -Descending | Select-Object -First 1
|
|
if ($rider) { $MSBuildPath = Join-Path $rider.FullName 'tools/MSBuild/Current/Bin/MSBuild.exe' }
|
|
}
|
|
}
|
|
if (!$MSBuildPath -or !(Test-Path -LiteralPath $MSBuildPath)) {
|
|
throw 'Pass -MSBuildPath with Visual Studio or Rider MSBuild.exe.'
|
|
}
|
|
|
|
if (!(Test-Path -LiteralPath 'packages/net48/build/.NETFramework/v4.8/mscorlib.dll')) {
|
|
New-Item -ItemType Directory -Force -Path 'packages/net48' | Out-Null
|
|
$archive = Join-Path $PSScriptRoot 'packages/net48/package.zip'
|
|
Invoke-WebRequest 'https://api.nuget.org/v3-flatcontainer/microsoft.netframework.referenceassemblies.net48/1.0.3/microsoft.netframework.referenceassemblies.net48.1.0.3.nupkg' -OutFile $archive
|
|
Expand-Archive -LiteralPath $archive -DestinationPath 'packages/net48' -Force
|
|
Remove-Item -LiteralPath $archive
|
|
}
|
|
|
|
& $MSBuildPath BlockModLoader.csproj /restore '/t:Rebuild,Pack' /p:Configuration=Release /v:minimal /nologo
|
|
if ($LASTEXITCODE -ne 0) { throw 'Library build failed.' }
|
|
if ($Test) {
|
|
& $MSBuildPath Tests/BlockModLoader.Tests.csproj /t:Rebuild /v:minimal /nologo
|
|
if ($LASTEXITCODE -ne 0) { throw 'Test build failed.' }
|
|
& ./Tests/bin/Release/BlockModLoader.Tests.exe
|
|
if ($LASTEXITCODE -ne 0) { throw 'Tests failed.' }
|
|
}
|
|
Write-Host "Library output: $PSScriptRoot/bin/Release/BlockModLoader.dll"
|
|
Write-Host "NuGet output: $PSScriptRoot/artifacts/BlockModLoader.1.0.0.nupkg"
|
|
}
|
|
finally { Pop-Location }
|