首页 > 解决方案 > 如何修复 Windows 桌面应用程序中的异常“无法加载文件或程序集 'Microsoft.SqlServer.Types,版本 = 12.0.0.0”

问题描述

该应用程序是一个相当简单的 WPF 应用程序,它允许用户生成简单的报告。这些报告是使用 Microsoft RDLC 报告设计器生成的,并使用 Microsoft Reporting Services 生成。

该应用程序在生产中运行良好一年多,但用户今天才开始遇到此错误。服务器管理员告诉我,这台服务器没有进行任何更改,即没有更新,也没有安装新的软件。

我的应用程序确实引用了 Microsoft.SqlServer.Types 但 Copy Local 属性设置为 True :

在此处输入图像描述

我验证了 Microsoft.SqlServer.Types.dll(版本 12.0.0.0)已复制到应用程序的文件夹中。

报告的定义文件Reports/ShipmentSummaryReport.rdlc也存在于应用程序文件夹中,并且自生产部署以来未更改。

完整的异常堆栈如下:

    Microsoft.Reporting.WinForms.LocalProcessingException: An error occurred during local report processing. 
---> Microsoft.Reporting.DefinitionInvalidException: The definition of the report 'Reports/ShipmentSummaryReport.rdlc' is invalid. 
---> Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: An unexpected error occurred in Report Processing. 
---> System.BadImageFormatException: Could not load file or assembly 'Microsoft.SqlServer.Types, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. The module was expected to contain an assembly manifest.
    at Microsoft.ReportingServices.ReportIntermediateFormat.Persistence.IntermediateFormatWriter.Write(Object obj, Boolean verify, Boolean assertOnInvalidType)

标签: .netwindowsrdlc

解决方案


在查看了支持主题和论坛后,我发现托管应用程序的计算机上缺少以下文件夹和 .dll:

C:\Windows\assembly\GAC_MSIL\Microsoft.SqlServer.Types\12.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.Types.dll

Microsoft.SqlServer.Types.dll我创建了文件夹并从https://www.nuget.org/packages/Microsoft.SqlServer.Types/下载了 v 12.0.0.0到这个文件夹中。

重新启动应用程序并报告工作。


推荐阅读