DinkToPdf Net Core 无法加载 DLL 文件

Git*_*ura 5 c# html-to-pdf wkhtmltopdf .net-core dinktopdf

我正在尝试使用DinkToPdf库从 HTML SQL 服务器数据库生成 PDF 。

在我添加的启动文件中:

var context = new CustomAssemblyLoadContext();
context.LoadUnmanagedLibrary(Path.Combine(Directory.GetCurrentDirectory(), "libwkhtmltox.dll"));
Run Code Online (Sandbox Code Playgroud)

该行在启动网络应用程序时给了我这个错误:

DllNotFoundException:无法加载 DLL 'C:\Program Files\IIS Express\libwkhtmltox.dll' 或其依赖项之一:找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)

System.Runtime.Loader.AssemblyLoadContext.InternalLoadUnmanagedDllFromPath(string unmanagedDllPath)

DllNotFoundException:无法加载 DLL 'C:\Program Files\IIS Express\libwkhtmltox.dll' 或其依赖项之一:找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)

小智 10

以防万一其他人遇到同样的问题,我可以通过安装 Microsoft Visual C++ 2015 Redistributable 来解决它。


Sha*_*ghi 7

在库的 git repo 中提到您应该下载二进制文件并将它们包含在您的源代码中:

将本机库复制到项目的根文件夹。当使用 P/Invoke 调用本机方法时,.NET Core 从那里加载本机库。你可以在这里找到最新版本的本地库。为您的操作系统和平台(64 位或 32 位)选择合适的库。

破坏性的是我要去那个网址并右键单击每个文件并选择save link as(chrome)。这会导致下载损坏的文件: 在此处输入图片说明

不要这样做,您必须在 github 中打开每个文件,然后使用该Download按钮。健康的文件比走错路时得到的文件大得多!

在此处输入图片说明

荒谬但问题可能是由这个引起的......


Git*_*ura 1

我找到了一些解决方法。它们并不完美,但值得一试,而且它们确实提供了帮助,我能够从 SQl Server 生成 PDF。我将 .dll 文件放在以下文件夹中并且它起作用了。

C:\Program Files\IIS Express

并加载 .dll 文件

Path.Combine(Directory.GetCurrentDirectory(), "libwkhtmltox.dll");
Run Code Online (Sandbox Code Playgroud)

另一种方式是我走完整条路

context.LoadUnmanagedLibrary(Path.GetFullPath(@"C:\Users\User\source\repos\WebSolution\WebApp\libwkhtmltox.dll"));
Run Code Online (Sandbox Code Playgroud)

他们俩都工作了。不过,我敦促 Net Core 开发人员好好研究 GetCurrentDir。或者从项目或解决方案文件夹加载的方法

Path.Combine(Directory.GetCurrentDirectory(), "libwkhtmltox.dll");
Run Code Online (Sandbox Code Playgroud)

  • 它确实可以在本地工作,但是当我发布到天蓝色时发生错误。 (2认同)