无法加载文件或程序集
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 与您的项目兼容更为重要。
如果有人偶然发现这个:
- 为您的消息创建 XSL 映射 XML 并将其映射到一些奇特的
HTML 布局(css 支持)
- Xtract XML 来自编排中的 BizTalk 消息
- 使用辅助解决方案渲染 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;
}
}
}
}
我想存档 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 与您的项目兼容更为重要。
如果有人偶然发现这个:
- 为您的消息创建 XSL 映射 XML 并将其映射到一些奇特的 HTML 布局(css 支持)
- Xtract XML 来自编排中的 BizTalk 消息
- 使用辅助解决方案渲染 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;
}
}
}
}