qbo4.Infrastructure.psm1
Write-Verbose "Setting up AssemblyResolve handler for qbo4.Infrastructure" if (-not $script:AssemblyHandlerAttached) { # Thread-safe cache (optional) $script:ResolvedAssemblies = [hashtable]::Synchronized(@{}) $script:AssemblyResolveHandler = { param($sender, [System.ResolveEventArgs] $eventArgs) if (-not $eventArgs -or -not $eventArgs.Name) { Write-Verbose "AssemblyResolve: eventArgs or Name was null" return $null } $requestedName = $eventArgs.Name.Split(',')[0] if ($script:ResolvedAssemblies.ContainsKey($requestedName)) { return $script:ResolvedAssemblies[$requestedName] } try { $assemblyPath = Join-Path -Path $PSScriptRoot -ChildPath "$requestedName.dll" # Optional: also look in a 'lib' subfolder if (-not (Test-Path $assemblyPath)) { $assemblyPath = Join-Path -Path (Join-Path $PSScriptRoot 'lib') -ChildPath "$requestedName.dll" } if (Test-Path $assemblyPath) { $assembly = [System.Reflection.Assembly]::LoadFrom($assemblyPath) $script:ResolvedAssemblies[$requestedName] = $assembly Write-Verbose "Manually loaded assembly: $requestedName from $assemblyPath" return $assembly } else { Write-Verbose "Assembly $requestedName not found under $PSScriptRoot (or /lib)" } } catch { Write-Warning "Failed to resolve assembly '$requestedName': $_" } return $null } [AppDomain]::CurrentDomain.add_AssemblyResolve($script:AssemblyResolveHandler) $script:AssemblyHandlerAttached = $true } Write-Verbose "Loading qbo4.Infrastructure cmdlets and functions from $PSScriptRoot" Import-Module (Join-Path -Path $PSScriptRoot -ChildPath qbo4.Infrastructure.Powershell.dll) Import-Module (Join-Path -Path $PSScriptRoot -ChildPath qbo4.WebServer.ps1) Import-Module (Join-Path -Path $PSScriptRoot -ChildPath qbo4.PublishModule.ps1) Import-Module (Join-Path -Path $PSScriptRoot -ChildPath qbo4.Nuget.ps1) Write-Verbose "Initializing qboConfig" Initialize-qboConfig Export-ModuleMember -Cmdlet '*' |