tools/devpack.ps1 (79 lines of code) (raw):
param(
[Parameter(Mandatory=$false)]
[String]
[ValidateSet("net8", "netfx")]
$DotnetVersion,
[Parameter(Mandatory=$false)]
[Switch]
$E2E,
[Parameter(Mandatory=$false)]
[Switch]
$SkipBuildOnPack,
[Parameter(Mandatory=$false)]
[string[]]
$AdditionalPackArgs = @()
)
# Packs the SDK locally, and (by default) updates the Sample to use this package, then builds.
# Specify --E2E to instead target the E2E test app.
# Use metadata to provide a version that is always head of the latest stable package
# E.g: Nuget packages will be named 2.0.0 with the version metedata set to 2.0.0+202501311440-local
$buildNumber = "+" + [System.DateTime]::Now.ToString("yyyyMMddHHmm")
Write-Host
Write-Host "Building packages with BuildNumber $buildNumber"
$rootPath = Split-Path -Parent $PSScriptRoot
$projects = @("$rootPath/samples/FunctionApp/FunctionApp.csproj")
$sdkProject = "$rootPath/build/DotNetWorker.Core.slnf"
if($E2E -eq $true)
{
# Only add E2EAspNetCoreApp if DotnetVersion is not netfx
if ($DotnetVersion -ne "netfx") {
$projects += "$rootPath/test/E2ETests/E2EApps/E2EAspNetCoreApp/E2EAspNetCoreApp.csproj"
}
# Always add E2EApp project for E2E tests
$projects += "$rootPath/test/E2ETests/E2EApps/E2EApp/E2EApp.csproj"
}
if ($SkipBuildOnPack -eq $true)
{
$AdditionalPackArgs += "--no-build"
}
$localPack = "$rootPath/local"
if (!(Test-Path $localPack))
{
New-Item -Path $localPack -ItemType directory | Out-Null
}
Write-Host
Write-Host "---Updating projects with local SDK pack---"
Write-Host "Packing Core .NET Worker projects to $localPack"
& "dotnet" "pack" $sdkProject "-p:PackageOutputPath=$localPack" "-nologo" "-p:VersionSuffix=$buildNumber" $AdditionalPackArgs
Write-Host
foreach ($project in $projects) {
Write-Host "Removing SDK package reference in $project"
& "dotnet" "remove" $project "package" "Microsoft.Azure.Functions.Worker.Sdk"
Write-Host
Write-Host "Removing Worker package reference in $project"
& "dotnet" "remove" $project "package" "Microsoft.Azure.Functions.Worker"
Write-Host
Write-Host "Finding latest local Worker package in $localPack"
$package = Find-Package Microsoft.Azure.Functions.Worker -Source $localPack
$version = $package.Version
Write-Host "Found $version"
Write-Host
Write-Host "Adding Worker package version $version to $project"
& "dotnet" "add" $project "package" "Microsoft.Azure.Functions.Worker" "-v" $version "-s" $localPack "-n"
Write-Host
Write-Host "Finding latest local SDK package in $localPack"
$package = Find-Package "Microsoft.Azure.Functions.Worker.Sdk" -Source $localPack
$version = $package.Version
Write-Host "Found $version"
Write-Host
Write-Host "Adding SDK package version $version to $project"
& "dotnet" "add" $project "package" "Microsoft.Azure.Functions.Worker.Sdk" "-v" $version "-s" $localPack "-n"
Write-Host
$configFile = Split-Path "$project"
$configFile += "/NuGet.Config"
Write-Host "Config file name" $configFile
& "dotnet" "nuget" "add" "source" $localPack "--name" "local" "--configfile" "$configFile"
Write-Host "Building $project"
& "dotnet" "build" $project "-nologo" "-p:TestBuild=true"
Write-Host "------"
}