无法加载文件或程序集

Could not load file or assembly

我想存档 DESADV 的 pdf 版本,因此我通过 Biztalk 自定义 XSLT 映射从原始 XML 文件创建了一个 Html 页面,并通过 Pechkin.Synchronized 将其呈现到一个 pdf(wkhtmltopdf 的包装)。

这在我的解决方案中就像一个魅力,但一旦我尝试将解决方案部署到 QA 系统,biztalk 一直唠叨说它找不到 Pechkin 库。 Lib 是通过 "gacutil -I" 部署的,我什至从源代码构建它并使用我们的 Biztalk 签名密钥对其进行签名,并将构建模式从 x86 更改为 "any CPU"。 我将所有需要的 dll 添加到 Helper Class 并手动部署它们,但 BizTalk 无法访问该库。请帮助我,我已经尝试了好几天都没有取得任何进展,这让我很生气。 我什至很难调试为什么它无法加载 dll。

我对 BizTalk 不是很流利,一直认为 BizTalk 可以访问 GAC 中的 DLL...

我还构建了一个控制台应用程序,它直接引用 GAC_MSIL 中的 DLL,并且该应用程序使用我在 BizTalk 解决方案助手 [=28= 中编写的确切代码呈现 html ].

即使这不能被视为真正的答案,但它以某种方式解决了问题。

正如已经有人提到的那样,DLL 依赖于其他库。结合起来,我无法将 DLL 部署到 gac 并且没有对主题有更深入的了解,我只是选择了另一个库,因为这已经花费了很多时间。嗯。

我选择共享软件 https://selectpdf.com/community-edition/,他们有一个简单有效的 nuget 包。 (我喜欢)。总体渲染速度不是很好,但我想最终保持 BizTalk 与您的项目兼容更为重要。

如果有人偶然发现这个:

  1. 为您的消息创建 XSL 映射 XML 并将其映射到一些奇特的 HTML 布局(css 支持)
  2. Xtract XML 来自编排中的 BizTalk 消息
  3. 使用辅助解决方案渲染 PDF

我的帮手代码class:

您需要从“引用”->“添加引用”->“程序集”->“扩展”中添加 "Microsoft.XLANGs.BaseTypes" 引用才能正常工作。

using System;
using Microsoft.XLANGs.BaseTypes;
using System.IO;

namespace BIS.CLC.DESADV.Helper
{
    public class HtmlHelper
    {
        public string xTractStringFromMessage(XLANGMessage message)
        {
            string retVal = string.Empty;
            try
            {
                using (var reader = new StreamReader(message[0].RetrieveAs(typeof(Stream)) as Stream))
                {
                    retVal = reader.ReadToEnd();
                }
            }
            catch (Exception ex)
            {
                Exception logex = new Exception("BIS.CLC.DESADV.Helper.HtmlHelper.xtractStringFromMsg: string extraction failed" + ex.Message.ToString() + ex.InnerException.ToString());
                BIS.Common.Helper.StaticClass.writeEventLog_BizTalk(logex.Message.ToString(), "BisLog");


                throw ex;
            }
            finally
            {
                message.Dispose();
            }
            return retVal;
        }

        public void renderPDFfromHTML(string html, string targetPath)
        {
            try
            {
                //do things
                SelectPdf.HtmlToPdf converter = new SelectPdf.HtmlToPdf();
                SelectPdf.PdfDocument doc = converter.ConvertHtmlString(html);
                doc.Save(new Uri(targetPath).LocalPath.Replace(".XML", ".PDF"));
                doc.Close();
            }
            catch (Exception ex)
            {
                Exception logex = new Exception("BIS.CLC.DESADV.Helper.HtmlHelper.renderPDFfromHTML: render pdf failed " + ex.Message.ToString() + ex.InnerException.ToString());
                BIS.Common.Helper.StaticClass.writeEventLog_BizTalk(logex.Message.ToString(), "BisLog");

                throw ex;
            }
        }
    }
}