A PowerShell module that helps you get un-stuck from dependency version conflicts that can occur when connecting to multiple Microsoft online services.
PowerShell 7.4 or later on Linux, macOS, or Windows.
Install-Module DLLPickle -Scope CurrentUserOr, with Microsoft.PowerShell.PSResourceGet:
Install-PSResource -Name DLLPickleImport DLL Pickle and run Import-DPLibrary before connecting to other service modules — ideally as the first thing in your PowerShell profile, so it loads first in every session.
Import-Module DLLPickle
Import-DPLibraryFor diagnostic detail, add -ShowLoaderExceptions -Verbose.
Primary:
Import-DPLibrary— preload DLLPickle-managed assemblies in dependency-aware order.Import-DPBaseProfile— preload, then import the validated base-profile modules (Exchange Online, Teams, Graph, Az.Accounts) in a known-good order.Test-DPLibraryConflict— report known-incompatible module pairs loaded in the current session, with the workaround.Get-DPConfig/Set-DPConfig— view or change configuration (for example, show logo, skip libraries).
Inspection helpers:
Find-DLLInPSModulePath— find DLLs across module paths, filtered by product metadata.Get-ModuleImportCandidate— show which installed module version would import.Get-ModulesWithDependency— list installed modules that package a given dependency.Get-ModulesWithVersionSortedIdentityClient— compare modules by packagedMicrosoft.Identity.Client.dllversion.
Full syntax and examples: docs index · command reference.
Many PowerShell modules — Az, Exchange Online, Microsoft Graph, Teams, and more — bundle their own copy of the Microsoft Authentication Library (MSAL) and related DLLs. A single PowerShell session can only load one version of a given DLL, so when two modules ship different versions you hit "an assembly with the same name is already loaded" and authentication breaks.
DLL Pickle preloads a current, compatible set of these assemblies first, so the "first one wins" rule works in your favor and the modules you load afterward reuse what's already there. A new DLL Pickle release is published automatically whenever a new MSAL version ships — so keep it updated and load it first.
For the full explanation (and the real-world issues that motivated it), read the Deep Dive. The supported platform is PowerShell 7.4+ (Core, net8.0); compatibility, versioning, and dependency details live in DEPENDENCIES.md.
- User guide and overview: docs/index.md
- Deep technical explanation: docs/Deep-Dive.md
- Troubleshooting and issue reproduction: docs/Troubleshooting.md
- Full command reference: docs/DLLPickle.md
- Changelog and active work: CHANGELOG.md
- Architecture blueprint and planned enhancements: docs/Architecture.md
- Dependency, versioning, and supply-chain policy: DEPENDENCIES.md
- Contribution workflow: .github/CONTRIBUTING.md
- Security vulnerability reporting: SECURITY.md
