Will man in Powershell mittels Add-Type eine DLL Datei laden, so kann es passieren, dass der Versuch mit einer Ausnahme abgebrochen wird:
PS> add-type -path ‚C:\Program Files\PackageManagement\NuGet\Packages\MimeKit.1.22.0\lib\net451\MimeKit.dll‘
add-type : Mindestens ein Typ in der Assembly kann nicht geladen werden. Rufen Sie die LoaderExceptions-Eigenschaft ab, wenn Sie weitere Informationen benötigen.
In Zeile:1 Zeichen:1
+ add-type -path ‚C:\Program Files\PackageManagement\NuGet\Packages\Mim …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Add-Type], ReflectionTypeLoadException
+ FullyQualifiedErrorId : System.Reflection.ReflectionTypeLoadException,Microsoft.PowerShell.Commands.AddTypeComma
nd
Schön solche umfassenden Fehlermeldungen, wo bekomme ich nun aber die LoaderException-Eigenschaft her? Das Fehlerobjekt liefert zunächst nix brauchbares. Der Parameter –Force ist wichtig damit alle Eigenschaften angezeigt werden:
PS> $error|fl * -Force
PSMessageDetails :
Exception : System.Reflection.ReflectionTypeLoadException: Mindestens ein Typ in der Assembly kann nicht
geladen werden. Rufen Sie die LoaderExceptions-Eigenschaft ab, wenn Sie weitere Informationen
benötigen.
bei System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
bei System.Reflection.Assembly.GetTypes()
bei Microsoft.PowerShell.Commands.AddTypeCommand.LoadAssemblyFromPathOrName(List`1
generatedTypes)
bei Microsoft.PowerShell.Commands.AddTypeCommand.EndProcessing()
bei System.Management.Automation.CommandProcessorBase.Complete()
TargetObject :
CategoryInfo : NotSpecified: (:) [Add-Type], ReflectionTypeLoadException
FullyQualifiedErrorId : System.Reflection.ReflectionTypeLoadException,Microsoft.PowerShell.Commands.AddTypeCommand
ErrorDetails :
InvocationInfo : System.Management.Automation.InvocationInfo
ScriptStackTrace : bei <ScriptBlock>, <Keine Datei>: Zeile 1
PipelineIterationInfo : {}
Aber es gibt bei der Exception-Eigenschaft etwas:
PS> $Error.Exception|fl -Force
Types : {MimeKit.MimeParser, MimeKit.AttachmentCollection, MimeKit.BodyBuilder,
MimeKit.ContentDisposition…}
LoaderExceptions : {System.IO.FileNotFoundException: Die Datei oder Assembly "BouncyCastle.Crypto, Version=1.8.1.0,
Culture=neutral, PublicKeyToken=0e99375e54769942" oder eine Abhängigkeit davon wurde nicht
gefunden. Das System kann die angegebene Datei nicht finden.
Dateiname: "BouncyCastle.Crypto, Version=1.8.1.0, Culture=neutral, PublicKeyToken=0e99375e54769942"
WRN: Protokollierung der Assemblybindung ist AUS.
Sie können die Protokollierung der Assemblybindungsfehler aktivieren, indem Sie den
Registrierungswert [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) auf 1 festlegen.
Hinweis: Die Protokollierung der Assemblybindungsfehler führt zu einer gewissen Leistungseinbuße.
Sie können dieses Feature deaktivieren, indem Sie den Registrierungswert
[HKLM\Software\Microsoft\Fusion!EnableLog] entfernen.
, System.IO.FileNotFoundException: Die Datei oder Assembly "BouncyCastle.Crypto, Version=1.8.1.0,
Culture=neutral, PublicKeyToken=0e99375e54769942" oder eine Abhängigkeit davon wurde nicht
gefunden. Das System kann die angegebene Datei nicht finden.
Dateiname: "BouncyCastle.Crypto, Version=1.8.1.0, Culture=neutral, PublicKeyToken=0e99375e54769942"
WRN: Protokollierung der Assemblybindung ist AUS.
Sie können die Protokollierung der Assemblybindungsfehler aktivieren, indem Sie den
Registrierungswert [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) auf 1 festlegen.
Hinweis: Die Protokollierung der Assemblybindungsfehler führt zu einer gewissen Leistungseinbuße.
Sie können dieses Feature deaktivieren, indem Sie den Registrierungswert
[HKLM\Software\Microsoft\Fusion!EnableLog] entfernen.
, System.IO.FileNotFoundException: Die Datei oder Assembly "BouncyCastle.Crypto, Version=1.8.1.0,
Culture=neutral, PublicKeyToken=0e99375e54769942" oder eine Abhängigkeit davon wurde nicht
gefunden. Das System kann die angegebene Datei nicht finden.
Dateiname: "BouncyCastle.Crypto, Version=1.8.1.0, Culture=neutral, PublicKeyToken=0e99375e54769942"
WRN: Protokollierung der Assemblybindung ist AUS.
Sie können die Protokollierung der Assemblybindungsfehler aktivieren, indem Sie den
Registrierungswert [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) auf 1 festlegen.
Hinweis: Die Protokollierung der Assemblybindungsfehler führt zu einer gewissen Leistungseinbuße.
Sie können dieses Feature deaktivieren, indem Sie den Registrierungswert
[HKLM\Software\Microsoft\Fusion!EnableLog] entfernen.
, System.IO.FileNotFoundException: Die Datei oder Assembly "BouncyCastle.Crypto, Version=1.8.1.0,
Culture=neutral, PublicKeyToken=0e99375e54769942" oder eine Abhängigkeit davon wurde nicht
gefunden. Das System kann die angegebene Datei nicht finden.
Dateiname: "BouncyCastle.Crypto, Version=1.8.1.0, Culture=neutral, PublicKeyToken=0e99375e54769942"
WRN: Protokollierung der Assemblybindung ist AUS.
Sie können die Protokollierung der Assemblybindungsfehler aktivieren, indem Sie den
Registrierungswert [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) auf 1 festlegen.
Hinweis: Die Protokollierung der Assemblybindungsfehler führt zu einer gewissen Leistungseinbuße.
Sie können dieses Feature deaktivieren, indem Sie den Registrierungswert
[HKLM\Software\Microsoft\Fusion!EnableLog] entfernen.
…}
Message : Mindestens ein Typ in der Assembly kann nicht geladen werden. Rufen Sie die
LoaderExceptions-Eigenschaft ab, wenn Sie weitere Informationen benötigen.
Data : {}
InnerException :
TargetSite : System.RuntimeType[] GetTypes(System.Reflection.RuntimeModule)
StackTrace : bei System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
bei System.Reflection.Assembly.GetTypes()
bei Microsoft.PowerShell.Commands.AddTypeCommand.LoadAssemblyFromPathOrName(List`1
generatedTypes)
bei Microsoft.PowerShell.Commands.AddTypeCommand.EndProcessing()
bei System.Management.Automation.CommandProcessorBase.Complete()
HelpLink :
Source : mscorlib
HResult : –2146232830
Da der ganze kram Drumherum in diesem Fall nicht interessiert, ist diese Zeile zielführend:
PS> $error[0].exception.loaderexceptions[0]
Die Datei oder Assembly "BouncyCastle.Crypto, Version=1.8.1.0, Culture=neutral, PublicKeyToken=0e99375e54769942" oder
eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.
Also kurz gesagt, es fehlt eine andere Assembly bzw. DLL-Datei, in diesem Fall BouncyCastle. Wenn also bei einer LoaderException bei Add-Type ein Problem auftaucht hilft diese Zeile:
$error[0].exception.loaderexceptions[0]