WinForm ReportView 在单击打印按钮时抛出 AccessViolationException

问题描述

我正在使用 sqlite3 数据库在 VisualStudio 中构建 WinForm 应用程序。我在应用程序中添加一个 ReportViewer 来查看报告。当我运行应用程序时,ReportViewer 显示报告就好了。但是,当我单击打印按钮时,没有出现打印对话框,并且出现以下异常:

System.AccessViolationException: '试图读取或写入保护 记忆。这通常表明其他内存已损坏。'

在调试模式下,异常将我指向启动整个应用程序的初始 Application.Run() 命令。

我的第一个想法是它可能是特定于机器的,所以我打开了一个我编写的旧应用程序,其中包含一个 ReportViewer。唯一显着的区别是它使用了 sql Server DB 而不是 sqlite。我通过 VS 调试器运行它并且报告打印得很好。

我尝试将平台目标从“任何 cpu”更改为 x64,结果发现不是抛出异常,而是出现一个对话框:“此操作期间发生错误。”

会不会是包冲突?这是软件包列表,以防它有助于诊断问题:

<packages>
  <package id="DeltaCompressionDotNet" version="1.1.0" targetFramework="net472" />
  <package id="Microsoft.Data.sqlite" version="5.0.7" targetFramework="net472" />
  <package id="Microsoft.Data.sqlite.Core" version="5.0.7" targetFramework="net472" />
  <package id="Microsoft.ReportingServices.ReportViewerControl.Winforms" version="150.1449.0" targetFramework="net472" />
  <package id="Microsoft.sqlServer.Types" version="14.0.314.76" targetFramework="net472" />
  <package id="Mono.Cecil" version="0.11.2" targetFramework="net472" />
  <package id="sharpcompress" version="0.17.1" targetFramework="net472" />
  <package id="sqlitePCLRaw.bundle_e_sqlite3" version="2.0.4" targetFramework="net472" />
  <package id="sqlitePCLRaw.core" version="2.0.4" targetFramework="net472" />
  <package id="sqlitePCLRaw.lib.e_sqlite3" version="2.0.4" targetFramework="net472" />
  <package id="sqlitePCLRaw.provider.dynamic_cdecl" version="2.0.4" targetFramework="net472" />
  <package id="squirrel.windows" version="2.0.1" targetFramework="net472" />
  <package id="System.Buffers" version="4.5.1" targetFramework="net472" />
  <package id="system.memory" version="4.5.4" targetFramework="net472" />
  <package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
  <package id="System.Runtime.CompilerServices.Unsafe" version="5.0.0" targetFramework="net472" />
</packages>

关于如何调试这个的任何想法?感谢您的帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)