如何修复PowerShell中的DLL LoaderExceptions

hrysbysz  于 2023-03-18  发布在  Shell
关注(0)|答案(1)|浏览(175)

我尝试加载itext7的.dll,但如果我使用这个

Add-Type -Path "D:\Eigene\Packages\itext7.7.1.5\lib\net40\itext.kernel.dll"

我得到了以下异常(从德语翻译而来):

Add-Type : Add-Type : Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
In Zeile:2 Zeichen:1
+ Add-Type -Path "D:\Eigene\Packages\itext7.7.1.5\lib\net40\itext.kerne ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Add-Type], ReflectionTypeLoadException
    + FullyQualifiedErrorId : System.Reflection.ReflectionTypeLoadException,Microsoft.PowerShell.Commands.AddTypeCommand

当我用途:

try   { Add-Type -Path "D:\Eigene\Packages\itext7.7.1.5\lib\net40\itext.kernel.dll" }
catch { $_.Exception.LoaderExceptions }

它说(也译自德语):
找不到文件或程序集“Ltd. net,Version=1.8.1.0,Culture=neutral,PublicKeyToken=0e99375e54769942”或它的依赖项。系统找不到指定的文件。
我该怎么补救呢?

编辑:我在系统上发现了BouncyCastle dll,它也是在我安装itext7包时下载的,但如果我在加载itext.kernel.dll之前加载"D:\Eigene\Packages\Portable.BouncyCastle.1.8.5\lib\net40\BouncyCastle.Crypto.dll",它也不工作。

biswetbf

biswetbf1#

您的程序集正在寻找一个与您所拥有的不同的版本。我不确定您是否可以像在应用程序中绑定旧程序集到新程序集那样在powershell中进行程序集绑定。例如:https://learn.microsoft.com/en-us/dotnet/framework/deployment/configuring-assembly-binding-redirection
您的错误是要求您使用公共标记加载版本www.example.com的1.8.1.0dll:公钥令牌= 0 e99375 e54769942
一般来说,程序集发布者不会更改他们的公共令牌,尽管从技术上讲,弹跳城堡可以这样做,所以您可能不需要指定它。
无论如何,你需要找到旧版本(看起来你有1. 8. 5)。这些很可能是兼容的,但最好/最安全的选择是使用你正在加载的程序集。
如果您需要对较新的程序集执行绑定重定向,可以在此处找到一些帮助:Powershell - Assembly binding redirect NOT found in application configuration file

相关问题