@@ -63,13 +63,24 @@ function Initialize-DbatoolsAssemblyLoader {
6363 # Get platform information
6464 $platformDetails = Get-PlatformDetails
6565
66- # Initialize the redirector for non-Core PowerShell
66+ # Reset resolver states
67+ $script :isResolving = $false
68+ $script :resolverInitialized = $false
69+
70+ # Initialize resolvers for non-Core PowerShell
6771 if ($PSVersionTable.PSEdition -ne ' Core' ) {
6872 try {
73+ # Initialize redirector first
6974 Initialize-DbatoolsAssemblyRedirector
75+
76+ # Then initialize resolution handler if redirector succeeded
77+ if ($script :dbatoolsRedirector ) {
78+ [System.AppDomain ]::CurrentDomain.add_AssemblyResolve($script :onAssemblyResolveEventHandler )
79+ $script :resolverInitialized = $true
80+ }
7081 }
7182 catch {
72- Write-Warning " Failed to initialize assembly redirector : $ ( $_.Exception.Message ) "
83+ Write-Warning " Failed to initialize assembly handlers : $ ( $_.Exception.Message ) "
7384 Write-Warning " This may cause issues with assembly loading in Windows PowerShell"
7485 }
7586 }
@@ -254,15 +265,24 @@ function Reset-DbatoolsAssemblyLoader {
254265
255266 # Remove assembly resolve handlers in non-Core PowerShell
256267 if ($PSVersionTable.PSEdition -ne ' Core' ) {
257- # Remove standard handler
258- if ($script :onAssemblyResolveEventHandler ) {
259- [System.AppDomain ]::CurrentDomain.remove_AssemblyResolve($script :onAssemblyResolveEventHandler )
260- }
268+ try {
269+ # Remove standard handler
270+ if ($script :onAssemblyResolveEventHandler -and $script :resolverInitialized ) {
271+ [System.AppDomain ]::CurrentDomain.remove_AssemblyResolve($script :onAssemblyResolveEventHandler )
272+ $script :resolverInitialized = $false
273+ }
274+
275+ # Remove redirector handler if it exists
276+ if ($script :dbatoolsRedirector ) {
277+ [System.AppDomain ]::CurrentDomain.remove_AssemblyResolve($script :dbatoolsRedirector.EventHandler )
278+ $script :dbatoolsRedirector = $null
279+ }
261280
262- # Remove redirector handler if it exists
263- if ($script :dbatoolsRedirector ) {
264- [System.AppDomain ]::CurrentDomain.remove_AssemblyResolve($script :dbatoolsRedirector.EventHandler )
265- $script :dbatoolsRedirector = $null
281+ # Reset resolver state
282+ $script :isResolving = $false
283+ }
284+ catch {
285+ Write-Warning " Error removing assembly handlers: $_ "
266286 }
267287 }
268288
0 commit comments