src/RuntimePwsh2.0/RefDlls.ps1
|
[CmdletBinding()] param ([switch]$noConsole) function GetAssemblyLocation($assemblyName) { ([System.AppDomain]::CurrentDomain.GetAssemblies() | Where-Object { $_.ManifestModule.Name -ieq $assemblyName } | Select-Object -First 1).Location } function LoadAssemblyAndGetLocation($verinfo) { $n = New-Object System.Reflection.AssemblyName($verinfo) [System.AppDomain]::CurrentDomain.Load($n).Location } $referenceAssembies = @((GetAssemblyLocation "System.dll")) if (!$noConsole) { $referenceAssembies += GetAssemblyLocation "Microsoft.PowerShell.ConsoleHost.dll" } $referenceAssembies += GetAssemblyLocation "System.Management.Automation.dll" # PS3+ 的 PSObject 实现 IDynamicMetaObjectProvider;-version 2.0 在引擎缺失时会落到 5.1,不引用 System.Core 会 CS0012 Add-Type -AssemblyName System.Core $referenceAssembies += GetAssemblyLocation "System.Core.dll" if ($noConsole) { $fx = if ($PSVersionTable.PSVersion.Major -le 2) { '2.0.0.0' } else { '4.0.0.0' } $referenceAssembies += LoadAssemblyAndGetLocation "System.Windows.Forms, Version=$fx, Culture=neutral, PublicKeyToken=b77a5c561934e089" $referenceAssembies += LoadAssemblyAndGetLocation "System.Drawing, Version=$fx, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" } $referenceAssembies -ne $null |