【发布时间】:2019-08-26 17:57:14
【问题描述】:
我正在尝试加载 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 }
上面写着(也翻译自德语):
文件或程序集“BouncyCastle.Crypto,版本=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",它也不起作用。
【问题讨论】:
-
将两个 DLL 文件放在同一个文件夹中,然后重试。
-
@TheMadTechnician 不幸的是没有解决它。会不会是版本问题?充气城堡 dll 是 1.8.5 但错误说它要加载 1.8.1?我对使用 dll 很陌生
-
我什至没有注意到版本不匹配。取决于第一个 DLL 指定为依赖项的内容,如果它需要特定版本还是仅需要最低版本。我想看看你能不能得到确切版本的充气城堡
-
@TheMadTechnician 太好了,成功了!
-
很多时候,Nuget 包版本与包内 DLL 的版本不匹配。您应该使用ILSpy 来确认依赖 DLL 的版本是否正确。
标签: powershell dll dllimport