我们想使用 RDLC 报表设计器下载 PDF 文件,并在页脚部分使用表达式来使用页码选项,但在运行文件时,出现以下错误,当我们尝试在上述目录中找到 v8.0.14 文件夹时,没有任何信息。旧建议说“只是将 vbc.exe 从 4.0 复制到 8.0.0”,但目录中没有 8.0.0 (dotnet) 文件夹。
处理请求时发生未处理的异常。
InvalidOperationException:找不到编译器可执行文件 C:\WINDOWS\Microsoft.NET\Framework64\v8.0.14\vbc.exe。
AspNetCore.ReportingServices.ReportPublishing.ReportPublishing.InternalCreateIntermediateFormat(Stream definitionStream, 输出字符串描述, 输出字符串语言, 输出ParameterInfoCollection 参数, 输出DataSourceInfoCollection 数据源, 输出DataSetInfoCollection sharedDataSetReferences, 输出UserLocationFlags userReferenceLocation, 输出ArrayList dataSetsName, 输出bool hasExternalImages, 输出bool hasHyperlinks, 输出byte[] dataSetsHash)
ReportProcessingException:报告处理中发生意外错误。 找不到编译器可执行文件 C:\WINDOWS\Microsoft.NET\Framework64\v8.0.14\vbc.exe。
甚至 ChatGPT 也无法正确回答,陷入了循环!
请
v4.0.30319
在此处复制并粘贴,然后重命名v8.0.x
,对我来说,错误消息是8.0.0
,您可以像下面一样检查它。为什么我们会遇到这个问题,因为它是 asp.net 核心应用程序,它尝试在 v8.0.0 中找到vbc.exe 。
据我所知,上述解决方法是迄今为止最好的答案。
我们为什么会面临这个问题?
因为您在 asp.net core 应用程序中使用了 RDLC 报告。众所周知,RDLC 用于 .NET Framework,而不是 .NET Core。从错误消息中我们发现
vbc.exe
是需要的。我们还将其用于
No Managed Code
asp.net 核心 Web 应用程序。提示
如果您的项目
only
部署在Windows IIS
,则可以使用上述解决方法。如果您计划迁移到Linux platform
,建议使用其他报告库(不推荐使用 RDLC)。