使用VS2017 ASP.NET Core Web API实例化ReportDocument时出现System.TypeLoadException

2020-09-19 17:05发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨,在将Crystal Repo...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,在将Crystal Report与VS2017集成时出现以下异常: ASP.NET Core Web API应用程序:

System.TypeLoadException

HResult = 0x80131522

来自程序集" CrystalDecisions.CrystalReports.Engine,Version = 13.0.2000.0,Culture = neutral,PublicKeyToken = 692fbea5521e1304"中类型为'CrystalDecisions.CrystalReports.Engine.FormatEngine'的Message = Method'PrintReportWithDialog'没有实现。/p>

Source = CrystalDecisions.CrystalReports.Engine

StackTrace:

在CrystalDecisions.CrystalReports.Engine.ReportDocument..ctor()

在D:\ repositories \ ReportService \ ReportService \ Services \ ParameterService.cs:line 32中的ReportService.Services.ParameterService..ctor()处

我的环境:

Windows 10

Visual Studio 2017

开发 ASP.NET 核心Web API

NuGet软件包:

CrystalDecisions.CrystaReports.Engine(1.0.0)

CrystalDecisions.ReportAppServer(1.0.0)

CrystalDecisions.ReportSource(1.0.0)

CrystalDecisions.Web(1.1.1)

CrystalReports.Shared(13.0.3501)

Microsoft.AspNetCore.All(2.0.6)

Swashbuckle.AspNetCore(2.4.0)

以下代码在执行" ReportDocument report = new ReportDocument()"行时发生了以下代码:

使用系统;

使用System.Collections.Generic;

使用 System.IO ;

使用System.Linq;

使用System.Threading.Tasks;

使用ReportService.Models;

使用CrystalDecisions.Shared;

使用CrystalDecisions.CrystalReports.Engine;

使用CrystalDecisions.ReportAppServer;

....

ReportDocument报告=新的ReportDocument();

请,我想念什么?

谢谢

8条回答
compass1988
2020-09-19 17:51

这是您需要做的:

在您的开发PC上

为VS 32位MSI卸载CR

卸载64位MSI

为CR EXE卸载CR

现在,安装VS EXE CR,黄色按钮。

如果需要,还选择64位运行时。

请勿在您的DEV PC上安装MSI,它们仅用于您的应用服务器或台式机安装程序。

阅读WIKI页面上的信息:

https: //wiki.scn.sap.com/wiki/display/BOBJ/Crystal+Reports%2C+Developer+for+Visual+Studio+Downloads

❗请注意:要集成" SAP Crystal Reports,Microsoft Visual Studio的开发人员版本",您必须运行Install Executable。 运行MSI不会将Crystal Reports完全集成到VS中。 根据定义,MSI文件仅用于运行时分发。

CR不在乎OS平台是什么,它是运行IIS的应用程序或平台。 在AppPool属性中,将64位应用程序池服务器的32位模式设置为false,或将32位应用程序池的设置为true。

现在要创建一个简单的WEB应用程序,请创建一个空Web应用程序

将default.aspx表单添加到您的应用中,并将其设置为"起始页"。

从"工具箱"选项转到"报告",然后选择"选择项目...

"。

.NET 标签中,等待VS填充它并展开"扩展"菜单项。

现在找到Crystal Reports Viewer并选择它,不需要其他任何东西。

在默认的ASPX表单上,单击CR查看器并将其放在表单中。

不查看参考,如果模板未添加参考,则将其添加到您的项目中:

现在在default.aspx.cs文件中,它应如下所示,选择您拥有的任何报告:

使用系统;
 使用System.Data;
 使用System.Configuration;

 使用System.Web;
 使用System.Web.Security;
 使用System.Web.UI;
 使用System.Web.UI.WebControls;
 使用System.Web.UI.WebControls.WebParts;
 使用System.Web.UI.HtmlControls;

 使用CrystalDecisions.Shared;
 使用CrystalDecisions.CrystalReports.Engine;
 使用CrystalDecisions.Web;

 公共局部类_Default:System.Web.UI.Page
 {
     受保护的void Page_Init(对象发送者,EventArgs e)
     {
         水晶= CrystalDecisions.CrystalReports.Engine.ReportDocument rpt =新的CrystalDecisions.CrystalReports.Engine.ReportDocument();
         rpt.Load(@" c:\ reports \ Formulas.rpt");
         CrystalReportViewer1.ReportSource = rpt;
     }
 } 

按F5键运行它,您应该会看到浏览器打开并显示报告

一周热门 更多>