using Microsoft.AspNetCore.Builder; using System; using System.IO; using System.Reflection; namespace JingGong.Abp.Print.GoDEX { public static class PrintExtension { public static void AddGoDEX(this IApplicationBuilder applicationBuilder) { //注:docker运行时需添加环境变量:#ENV LD_LIBRARY_PATH=/app/libx64:$LD_LIBRARY_PATH ExtractResourceToFile("JingGong.Abp.Print.GoDEX.x64lib.libezio.so.1.1.0", "libx64/libezio.so.1.1.0"); ExtractResourceToFile("JingGong.Abp.Print.GoDEX.x64lib.libttf_x64.so", "libx64/libttf_x64.so"); ExtractResourceToFile("JingGong.Abp.Print.GoDEX.x64lib.libusb-1.0.so.0.3.0", "libx64/libusb-1.0.so.0"); //临时解决环境变量未生效问题 ExtractResourceToFile("JingGong.Abp.Print.GoDEX.x64lib.libezio.so.1.1.0", "libezio.so.1.1.0"); ExtractResourceToFile("JingGong.Abp.Print.GoDEX.x64lib.libttf_x64.so", "libttf_x64.so"); ExtractResourceToFile("JingGong.Abp.Print.GoDEX.x64lib.libusb-1.0.so.0.3.0", "libusb-1.0.so.0"); } /// /// 释放资源文件至本地文件 /// /// /// internal static void ExtractResourceToFile(string resourceName, string fileFullName) { using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)) { if (stream == null) return; try { var dir = Path.GetDirectoryName(fileFullName); if (!string.IsNullOrEmpty(dir) && !Directory.Exists(dir)) Directory.CreateDirectory(dir); using (FileStream fileStream = new FileStream(fileFullName, FileMode.Create, FileAccess.Write)) { stream.CopyTo(fileStream); } } catch { Console.WriteLine($"写入{fileFullName}失败"); } } } } }