我正在引用NuGet包ABCpdf
,它提供了一个托管的DLLabcpdf.dll
和四对本地DLL,在x86和x64两个版本中:
packages\ABCpdf\11.2.2\build\PrintHook64.dll
packages\ABCpdf\11.2.2\build\3DGlue11-32.dll
packages\ABCpdf\11.2.2\build\3DGlue11-64.dll
packages\ABCpdf\11.2.2\build\ABCpdf11-32.dll
packages\ABCpdf\11.2.2\build\ABCpdf11-64.dll
packages\ABCpdf\11.2.2\build\ChakraCore32.dll
packages\ABCpdf\11.2.2\build\ChakraCore64.dll
packages\ABCpdf\11.2.2\build\PrintHook32.dll
在 LinqPad 中运行需要以下 DLL 的查询将失败,除非我手动将所有这些 DLL 复制到
%PROGRAMFILES%\LINQPad5
,正如 LINQPad 作者 @joe-albahari 在此处建议的那样:https://dev59.com/dJPea4cB1Zd3GeqP-RFT#34834789。这是在 2016 年发生的。在 2018 年是否有更自动化的方法?
我尝试在查询属性中添加对本地 DLL 的引用,但会生成此错误。
CS0009 Metadata file '..\ABCpdf11-64.dll' could not be opened -- PE image doesn't contain managed metadata.
我尝试使用将所有非框架引用复制到单个本地文件夹选项,这听起来就像是为了解决这种情况而设计的。不幸的是,这也没有起作用;仍然出现了这个错误。
DllNotFoundException: Unable to load DLL 'ABCpdf11-32.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
nupkg
,还是将文件复制到提取的lib
或lib\net40
文件夹中。因此,我将继续使用%PROGRAMFILES%\LINQPad5
。 - Ross Presser%USERPROFILE%/.nuget
下的常规 NuGet 缓存。相反,它使用一个特定于 LinqPad 的缓存,如果您通过 NuGet 包管理导航,单击“设置”,然后选择“高级”选项卡,可以更改该缓存。在我的设置中,它的默认值为%LocalAppData%\LINQPad\NuGet.FW46
。我使用以下语句进行测试:var point = new WebSupergoo.ABCpdf.XPoint();
。这会产生与您相同的错误。将 DLL 复制到相关文件夹后,它就可以正常运行了。 - Arca Artem