DotNet · 2022年3月18日

显示rdlc报表时,提示未能加载文件或程序集异常Microsoft.ReportViewer.WinForms.resources

运行显示RDLC报表时,提示如下异常,但查看文件目录及程序,都是正确的

System.IO.FileLoadException
  HResult=0x80131040
  Message=未能加载文件或程序集“Microsoft.ReportViewer.WinForms.resources, Version=12.0.0.0, Culture=zh-CHS, PublicKeyToken=89845dcd8080cc91”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)
  Source=mscorlib
  StackTrace:
   在 System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
   在 System.Reflection.RuntimeAssembly.InternalGetSatelliteAssembly(String name, CultureInfo culture, Version version, Boolean throwOnFileNotFound, StackCrawlMark& stackMark)

解决这个问题的临时办法有二

1:是在工具->选项->调试->常规选项中启用“我的代码”选项。
2:勾选从以下位置引发时除外

推荐的完美解决方法:

    最终通过分析异常信息,找到原因是资源文件的culture错误,如果导入为zh-CHS,但实际文件定义为zh-Hans,那么匹配自然会出错,老外对中文系统编码无法精确识别
所以可以强制设定当前程序要使用的UI标识符,如在启动时强制设定
‘My.Settings.currentUICulture=“zh-Hans”;
Thread.CurrentThread.CurrentUICulture = New CultureInfo(My.Settings.currentUICulture)   
因为自动生成了hans,但放在了chs目录下面,因此还要把资源文件目录名称修改为Hans目录,如已存在,则移到Hans目录下面即可,运行即可正常

最新电影,电视剧,尽在午夜剧场

电影电视剧午夜不寂寞