winforms 使用costura嵌入报表查看器dll时出错

f45qwnt8  于 2023-02-05  发布在  其他
关注(0)|答案(1)|浏览(153)

我正在vs2019中创建一个winform应用程序,通过报表查看器创建报表,运行良好。但是,当我使用Fody/Costura嵌入dll时,报表查看器不知何故出现错误。
我也尝试手动嵌入dll,但同样的错误仍然发生。
错误消息显示在报表查看器中,
本地报表处理期间出错。报表""的定义无效。报表处理期间出错。"Microsoft. Reporting. Services. ReportIntermediateFormat. Persistence. IntermediateFormatVersion"的类型初始值设定项引发异常。路径不是合法的表单。
任何帮助都将不胜感激。谢谢。

yfjy0ee7

yfjy0ee71#

我今天遇到了同样的问题。基于内部异常,似乎报表查看器需要获得相关dll的版本才能正常工作。如果dll是嵌入式的,报表查看器无法找到它。

System.ArgumentException: The path is not of a legal form.
   at System.IO.Path.NewNormalizePath(String path, Int32 maxPathLength, Boolean expandShortPaths)
   at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength, Boolean expandShortPaths)
   at System.IO.Path.GetFullPathInternal(String path)
   at System.IO.Path.GetFullPath(String path)
   at System.Diagnostics.FileVersionInfo.GetFullPathWithAssert(String fileName)
   at System.Diagnostics.FileVersionInfo.GetVersionInfo(String fileName)
   at Microsoft.ReportingServices.ReportIntermediateFormat.Persistence.IntermediateFormatVersion.<>c__DisplayClass2_0.<.cctor>b__0()
   at Microsoft.ReportingServices.Diagnostics.RevertImpersonationContext.<>c__DisplayClass1_0.<Run>b__0(Object state)
   at System.Security.SecurityContext.Run(SecurityContext securityContext, ContextCallback callback, Object state)
   at Microsoft.ReportingServices.Diagnostics.RevertImpersonationContext.Run(ContextBody callback)
   at Microsoft.ReportingServices.ReportIntermediateFormat.Persistence.IntermediateFormatVersion..cctor()
   --- End of inner exception stack trace ---

经过反复试验,我发现要使报表查看器正常工作,需要从Fody/Costura中排除“Microsoft.ReportViewer.ProcessingObjectModel”和“Microsoft.ReportViewer.Common”。以下是我正在使用的FodyWeavers.xml。

<?xml version="1.0" encoding="utf-8"?>
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
  <Costura>
    <ExcludeAssemblies>
      Microsoft.ReportViewer.ProcessingObjectModel
      Microsoft.ReportViewer.Common
    </ExcludeAssemblies>
  </Costura>
</Weavers>

相关问题