无法加载文件或程序集 PDFsharp
Could not load file or assembly PDFsharp
这是一个很长的错误,但我会给你关键的细节。假设我发布了一个包含 PDFsharp 库的 C# 应用程序,但我使用它们的函数很少,这就是我收到错误的地方。
我尝试创建多个 PDF(通过 Crystal 报告并将它们导出为 PDF),然后将这些多个合并为一个。还没有错误。合并时我正在使用 PDFsharp 函数,我将包含下面的代码来澄清,这是棘手的部分,代码工作得很好,合并 PDF 并做所有事情但只在我的 PC 上,我试图将应用程序 (.exe) 提供给某人否则并在他们的 PC 上制作它们 运行,他回来时合并功能出错。
另外,仅供参考:正在创建 PDF 只是合并是一个问题,这意味着程序无法找到它需要合并的文件,它正在寻找一些它可以的 PDFsharp 库找。现在,这个错误没有任何意义,因为据我所知,当一个应用程序发布时,它会绑定所有的库,这样其他用户就不必包含它们了。我还包括其他库,它们不会给出任何错误,因此我们可以得出结论,PDFsharp 出了问题。
Error: System.IO.FileNotFoundException: Could not load file or assembly 'PdfSharp, Version=1.32.3057.0, Culture=neutral, PublicKeyToken=f94615aa0424f9eb' or one of its dependencies.
另一个仅供参考:我已经记录了所有错误并尝试了程序集绑定、IIS 应用程序池、不同 CPU 上的版本以及几乎所有内容,所以请想出一些可行的方法!
这是我的合并代码(取自其他来源):
using (PdfDocument targetDoc = new PdfDocument())
{
foreach (string pdf in pdfs)
{
using (PdfDocument pdfDoc = PdfSharp.Pdf.IO.PdfReader.Open(pdf,
PdfSharp.Pdf.IO.PdfDocumentOpenMode.Import))
{
for (int i = 0; i < pdfDoc.PageCount; i++)
{
targetDoc.AddPage(pdfDoc.Pages[i]);
}
}
}
targetDoc.Save(targetPath);
}
您必须将文件 PdfSharp.dll 与您的 .EXE 文件(以及 PdfSharp.dll 引用的所有程序集)一起发送。您的 .EXE 不包含您在编译时引用的其他程序集的代码,因此这些其他程序集必须在 运行 时出现。
顺便说一句:您使用的是 2013 年左右的 1.32 版,因此您缺少过去五年的所有错误修复。
Now, the error holds no meaning because according to my knowledge, when an application is released, it binds all the libraries in itself so that other users don't have to include them.
这对我来说是新的。该信息有任何参考资料吗?我认为错误信息是正确的,而你的假设是错误的...
C/C++ 的 LIB 库适用的情况不适用于 Windows DLL 文件。 DLL 在 运行 时加载,因此它们必须存在于 运行 应用程序的计算机上。
这是一个很长的错误,但我会给你关键的细节。假设我发布了一个包含 PDFsharp 库的 C# 应用程序,但我使用它们的函数很少,这就是我收到错误的地方。
我尝试创建多个 PDF(通过 Crystal 报告并将它们导出为 PDF),然后将这些多个合并为一个。还没有错误。合并时我正在使用 PDFsharp 函数,我将包含下面的代码来澄清,这是棘手的部分,代码工作得很好,合并 PDF 并做所有事情但只在我的 PC 上,我试图将应用程序 (.exe) 提供给某人否则并在他们的 PC 上制作它们 运行,他回来时合并功能出错。
另外,仅供参考:正在创建 PDF 只是合并是一个问题,这意味着程序无法找到它需要合并的文件,它正在寻找一些它可以的 PDFsharp 库找。现在,这个错误没有任何意义,因为据我所知,当一个应用程序发布时,它会绑定所有的库,这样其他用户就不必包含它们了。我还包括其他库,它们不会给出任何错误,因此我们可以得出结论,PDFsharp 出了问题。
Error: System.IO.FileNotFoundException: Could not load file or assembly 'PdfSharp, Version=1.32.3057.0, Culture=neutral, PublicKeyToken=f94615aa0424f9eb' or one of its dependencies.
另一个仅供参考:我已经记录了所有错误并尝试了程序集绑定、IIS 应用程序池、不同 CPU 上的版本以及几乎所有内容,所以请想出一些可行的方法!
这是我的合并代码(取自其他来源):
using (PdfDocument targetDoc = new PdfDocument())
{
foreach (string pdf in pdfs)
{
using (PdfDocument pdfDoc = PdfSharp.Pdf.IO.PdfReader.Open(pdf,
PdfSharp.Pdf.IO.PdfDocumentOpenMode.Import))
{
for (int i = 0; i < pdfDoc.PageCount; i++)
{
targetDoc.AddPage(pdfDoc.Pages[i]);
}
}
}
targetDoc.Save(targetPath);
}
您必须将文件 PdfSharp.dll 与您的 .EXE 文件(以及 PdfSharp.dll 引用的所有程序集)一起发送。您的 .EXE 不包含您在编译时引用的其他程序集的代码,因此这些其他程序集必须在 运行 时出现。
顺便说一句:您使用的是 2013 年左右的 1.32 版,因此您缺少过去五年的所有错误修复。
Now, the error holds no meaning because according to my knowledge, when an application is released, it binds all the libraries in itself so that other users don't have to include them.
这对我来说是新的。该信息有任何参考资料吗?我认为错误信息是正确的,而你的假设是错误的...
C/C++ 的 LIB 库适用的情况不适用于 Windows DLL 文件。 DLL 在 运行 时加载,因此它们必须存在于 运行 应用程序的计算机上。