๐ฅ DLL Pickle¶
A PowerShell module that helps you get un-stuck from dependency version conflicts that can occur when connecting to multiple Microsoft online services.

๐งโ๐ป Getting Started¶
Prerequisites¶
One of the declared PowerShell lines in the generated support matrix on Linux, macOS, or Windows. The current contract is PowerShell 7.4, 7.5, and 7.6, each with its matching .NET runtime bundle. The matrix distinguishes Microsoft lifecycle support from a bounded hosted-service compatibility holdover.
Installation¶
Or, with Microsoft.PowerShell.PSResourceGet:
Using¶
Import 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.
For diagnostic detail, add -ShowLoaderExceptions -Verbose.
Commands¶
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.
The inspection helpers are cross-edition.
Import-DPLibraryneeds a supported PowerShell/.NET profile, but these helpers also scan the Windows PowerShell module roots โ so a Windows PowerShell 5.1 user can use a supported PowerShell session to find which module to load first and apply the “first one wins” fix manually.
Full syntax and examples: docs index ยท command reference.
๐ฅ How It Works¶
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. Dependency updates are locked, tested across every supported PowerShell/OS profile, and released only after the compatibility gates pass.
The loader selects net8.0, net9.0, or net10.0 from the exact PowerShell minor and CLR major and fails closed on an unknown or mismatched pair.
For the full explanation (and the real-world issues that motivated it), read the Deep Dive.
Compatibility, versioning, and dependency details live in DEPENDENCIES.md.
๐ Documentation Map¶
- 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
- Generated Microsoft support contract: Support Matrix
- Generated upstream evidence and explicit gaps: Compatibility Evidence
- Contribution workflow: .github/CONTRIBUTING.md
- Security vulnerability reporting: SECURITY.md