无法加载文件或程序集 'itextsharp' 或其某个依赖项。

3

我正在尝试按照这个 RazorPDF 教程进行操作,但是我不知道为什么会出现以下错误信息:非常沮丧和疲惫。

错误信息:

无法加载文件或程序集 'itextsharp' 的一个或多个依赖项。所定位的程序集清单定义与程序集引用不匹配。(来自 HRESULT: 0x80131040 的异常)

itextsharp:

运行时版本:v1.1.4322 版本:4.1.2.0

RazorPDF:

运行时版本:4.0.30319

在控制器中:

   public ActionResult Index()
    {
        var studentMarks = new List<MarksCard>()
        {
           new MarksCard()
            {
                RollNo = 101, Subject = "C#",
                FullMarks = 100, Obtained = 90},new MarksCard() {RollNo = 101, Subject = "asp.net", FullMarks = 100, Obtained = 80},new MarksCard() {RollNo =               101, Subject = "MVC", FullMarks = 100,
                Obtained = 100},new MarksCard() {RollNo = 101, Subject = "SQL Server", FullMarks = 100, Obtained = 75},
        };
       //// return new RazorPDF.PdfResult(studentMarks, "Index");
        return View(studentMarks);

    }

内部视图

@model IEnumerable<TimberBeamCalculator.Models.MarksCard>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table>
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.RollNo)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Subject)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.FullMarks)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Obtained)
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.RollNo)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Subject)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.FullMarks)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Obtained)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
            @Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
            @Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
        </td>
    </tr>
}

</table>

你有检查过你当前 .net 版本所支持的 itextsharp.dll 和 razor 的两个版本吗? - cat916
1
这可能会引起兴趣 https://dev59.com/OGQn5IYBdhLWcg3w36M1#20198939 - hutchonoid
6个回答

2

如果您在Visual Studio中按下F5进行调试,则会出现此问题。如果您没有调试,则始终按Ctrl+F5。该问题主要是由项目文件中的某些错误配置设置导致的。要解决它:

  1. 添加引用中删除dll

  2. 获取dll的新副本。

  3. 添加此dll的引用。

这应该可以解决问题。


并不是必须的,当这种情况发生时我并没有在调试。通常我使用CTRL + F5测试我的网站,因为我不想停止运行网站来更新代码和测试更改。只有在需要运行断点时才会进行调试。 - Artorias2718

2
请检查确保你的 iTextSharp 程序放在正确的位置。我猜你可能缺少了一些东西。
我强烈建议你首先按照初始项目示例进行操作,尝试让它们正常工作。

嗨Al,感谢回复。我能够成功地在我的机器上运行你在Github上的示例项目。你的项目针对的是.net 4.0版本,而我的项目则是针对.net 4.5版本的.. 我不知道这是否有影响。 - dotnet-practitioner
Al,感谢你的演示。我从没有那些dll的点重新启动了代码库,从头开始注册DLL...然后它就可以工作了。 - dotnet-practitioner
不确定问题出在哪里,我通过NuGet将iTextSharp从版本5.5.8更新到5.5.9,然后收到了错误提示。我将其从引用列表中删除,然后重新添加了dll文件,问题得以解决。 - Artorias2718

0

在 .csproj 文件中添加引用路径,您可以使用 itextsharp 或引用的 DLL。

<Reference Include="iTextSharp, Version=4.1.6.0, Culture=neutral, PublicKeyToken=8354ae6d2174ddca">
  <HintPath>..packages\iTextSharp-LGPL.4.1.6\lib\iTextSharp.dll</HintPath>
</Reference>

0

我在使用Visual Studio进行Web开发时遇到了同样的错误。解决方法是从Nuget包管理器安装itextSharp。


0

我使用itextsharp和itextsharp.xmlworker dlls时出了问题,所以我从引用中删除了这两个dlls,并直接从nuget packages下载了新的dlls,这解决了我的问题。

也许这种方法对其他人解决问题有用。


-1

然后针对最新的iTextSharp LGPL源代码进行编译。这样,您还可以更改所使用的目标框架版本。

P.S. RazorPdf使用iTextSharp的HTMLWorker。它已被弃用,不再受支持。它的HTML转PDF功能非常有限。他们最近用XMLWorker替换了它:http://sourceforge.net/projects/itextsharp/files/xmlworker/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接