Biztalk 无法加载文件或程序集

Biztalk 无法加载文件或程序集,biztalk,biztalk-2013,Biztalk,Biztalk 2013,我想归档DESADV的pdf版本,因此我通过Biztalk自定义XSLT映射从原始XML文件创建Html页面,并通过Pechkin.Synchronized将其呈现为pdf(wkhtmltopdf的包装) 这在我的解决方案中很有魅力,但一旦我尝试将解决方案部署到QA系统,biztalk就一直唠叨着找不到Pechkin库。 Libs是通过“gacutil-I”部署的,我甚至从源代码构建它,并使用Biztalk签名密钥对其进行签名,并将构建模式从x86更改为“任意CPU”。 我向Helper类添加了

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

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

我对BizTalk不是很熟练,一直认为GAC中的DLL可以访问BizTalk

我还构建了一个控制台应用程序,该应用程序直接引用GAC_MSIL中的DLL,并使用我在BizTalk Solutions helper类中编写的确切代码呈现html


即使这也不能被认为是一个真正的答案,但它以某种方式解决了问题

正如已经有人提到的,DLL依赖于其他LIB。再加上我无法将DLL部署到gac,对这个主题也没有更深入的理解,我只是选择了另一个库,因为这已经花费了很多时间。嗯

我选择共享软件,他们有一个简单有效的nuget软件包。(我喜欢)。总体渲染速度没有那么快,但我想最后更重要的是保持BizTalk与您的项目兼容

如果有人偶然发现了这一点:

  • 为您的消息XML创建XSL映射,并将其映射到某个位置 HTML布局(支持css)
  • 从编排中的BizTalk消息提取XML
  • 使用辅助解决方案呈现PDF
  • 我的助手类代码:

    您需要从引用->添加引用->程序集->扩展中添加“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;
                }
            }
        }
    }
    

    只是一次精神检查;将程序集添加到GAC后,是否重新启动了主机(如果它在独立主机中运行,则重新启动IIS)?这是必须的……无数次;)是否在比业务流程更高的.net版本上生成dll?请在visual studio->清理解决方案->重新启动visual studio->重新添加dll引用中删除引用。请确保您只有此dll,而没有其他版本在其他地方浮动。您确定Pechkin程序集没有自己的引用吗?