PaperinikDB.psm1
|
# PaperinikDB Module Loader # Detects .NET version and loads appropriate assemblies $libPath = "$PSScriptRoot\lib" # Determine the best available .NET framework library to load $runtimeMajor = [System.Environment]::Version.Major # Build candidates from best match down; pick the first whose DLLs actually exist $targetFramework = @( if ($runtimeMajor -ge 10) { 'net10' } if ($runtimeMajor -ge 8) { 'net8' } if ($runtimeMajor -ge 6) { 'net6' } ) | Where-Object { Test-Path "$libPath\$_\DuckDB.NET.Data.dll" } | Select-Object -First 1 # Set up native library path for duckdb.dll # DuckDB.NET needs to find the native library at runtime $nativeLibPath = if (Test-Path "$libPath\core") { "$libPath\core" } else { $libPath } # Add native library path to PATH so DuckDB.NET can find duckdb.dll if ($env:PATH -notlike "*$nativeLibPath*") { $env:PATH = "$nativeLibPath;$env:PATH" } # Load DuckDB.NET assemblies from appropriate location if ($targetFramework) { # Load from versioned subdirectory (existence already verified above) Add-Type -Path "$libPath\$targetFramework\DuckDB.NET.Data.dll" Add-Type -Path "$libPath\$targetFramework\DuckDB.NET.Bindings.dll" Write-Verbose "Loaded DuckDB.NET assemblies from lib/$targetFramework (native from lib/core)" } else { # Fallback to root lib directory (backward compatibility) Add-Type -Path "$libPath\DuckDB.NET.Data.dll" Add-Type -Path "$libPath\DuckDB.NET.Bindings.dll" Write-Verbose 'Loaded DuckDB.NET assemblies from lib/' } . $PSScriptRoot\Public\New-DuckDBConnectionWithFunctions.ps1 |