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

C# 使用costura嵌入报表查看器dll时出错,c#,winforms,rdlc,fody-costura,C#,Winforms,Rdlc,Fody Costura,我正在vs2019中创建winform应用程序,通过报表查看器创建报表,效果良好。但是,当我使用Fody/Costura嵌入dll时,报表查看器不知何故给出了一个错误 我也尝试手动嵌入dll,但同样的错误仍然发生 错误消息将显示在报表查看器中 本地报表处理过程中出错。 “报告”的定义无效。 报表处理中出现意外错误。 “Microsoft.Reporting.Services.ReportIntermediateFormat.Persistence.IntermediateFormatVersio

我正在vs2019中创建winform应用程序,通过报表查看器创建报表,效果良好。但是,当我使用Fody/Costura嵌入dll时,报表查看器不知何故给出了一个错误

我也尝试手动嵌入dll,但同样的错误仍然发生

错误消息将显示在报表查看器中

本地报表处理过程中出错。 “报告”的定义无效。 报表处理中出现意外错误。 “Microsoft.Reporting.Services.ReportIntermediateFormat.Persistence.IntermediateFormatVersion”的类型初始值设定项引发异常。 路径不是一种合法形式


非常感谢您的帮助。谢谢。

我今天遇到了相同的问题。基于内部异常,报表查看器似乎需要获取其相关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 ---
System.ArgumentException:路径不是合法形式。
在System.IO.Path.NewNormalizePath(字符串路径、Int32 maxPathLength、布尔扩展短路径)
在System.IO.Path.NormalizePath(字符串路径、布尔完整检查、Int32 maxPathLength、布尔扩展短路径)
位于System.IO.Path.GetFullPathInternal(字符串路径)
在System.IO.Path.GetFullPath(字符串路径)处
位于System.Diagnostics.FileVersionInfo.GetFullPathWithAssert(字符串文件名)
位于System.Diagnostics.FileVersionInfo.GetVersionInfo(字符串文件名)
在Microsoft.ReportingServices.ReportIntermediateFormat.Persistence.IntermediateFormatVersion.c__DisplayClass2_0.b_0()中
在Microsoft.ReportingServices.Diagnostics.RevertImpersonationContext.c__DisplayClass1_0.b__0(对象状态)中
在System.Security.SecurityContext.Run(SecurityContext SecurityContext、ContextCallback回调、对象状态)
在Microsoft.ReportingServices.Diagnostics.RevertImpersonationContext.Run(ContextBody回调)中
在Microsoft.ReportingServices.ReportIntermediateFormat.Persistence.IntermediateFormatVersion..cctor()中
---内部异常堆栈跟踪的结束---
经过一些尝试和错误,我发现要使报表查看器正常工作,“Microsoft.ReportViewer.ProcessingObjectModel”和“Microsoft.ReportViewer.Common”需要从Fody/Costura中排除。下面是我正在使用的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>

Microsoft.ReportViewer.ProcessingObject模型
Microsoft.ReportViewer.Common