Visual Studio 2017 Crystal Reports SP21程序集加载失败解决方案求助
解决Visual Studio 2017 + Crystal Reports SP21的FileNotFoundException问题
我之前踩过这个一模一样的坑,折腾了好几个小时才搞定,给你整理几个亲测有效的解决办法,按顺序试应该能解决:
1. 先确认Crystal Reports运行时版本完全匹配SP21
- 先把电脑上现有的Crystal Reports运行时卸载干净,然后下载对应SP21的32位/64位运行时安装包——注意要和你项目的平台目标(x86/x64)对应,别装错版本
- 安装完运行时一定要重启Visual Studio 2017,再尝试编译项目
2. 检查项目里的程序集引用和NuGet包
- 右键你的项目→「管理NuGet程序包」,看看有没有安装Crystal Reports相关的包,确保
CrystalDecisions.ReportAppServer.CommLayer的版本是13.0.2000.0 - 如果版本不对,先卸载现有NuGet包,再重新安装对应SP21版本的包
- 另外,找到项目引用里的这个程序集,右键→「属性」,把「复制本地」改成
True,这样编译时会把这个dll复制到输出目录,避免运行时找不到
3. 手动注册缺失的dll文件
- 找到Crystal Reports安装目录下的
CrystalDecisions.ReportAppServer.CommLayer.dll,通常路径是C:\Program Files (x86)\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Common\SAP BusinessObjects Enterprise XI 4.0\win32_x86(x64版本就在win64_x64目录) - 以管理员身份打开命令提示符,运行注册命令:
regsvr32 "C:\Program Files (x86)\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Common\SAP BusinessObjects Enterprise XI 4.0\win32_x86\CrystalDecisions.ReportAppServer.CommLayer.dll" - 注册成功会弹出提示框,之后重启VS再测试
4. 调整项目的平台目标设置
- 右键项目→「属性」→「生成」,把「平台目标」改成
x86——SP21这个版本对32位环境兼容性更好,很多时候就是因为用了Any CPU或者x64导致找不到dll - 如果选的是Any CPU,记得把「首选32位」的选项勾上
5. 彻底清理后重建项目
- 先在VS里点「项目」→「清理解决方案」,把旧的编译文件清掉
- 手动删除项目文件夹里的
bin和obj目录,确保没有残留的旧dll - 最后重新生成解决方案,让所有依赖项重新复制到输出目录
内容的提问来源于stack exchange,提问作者BeingDeveloper
相关产品推荐
相关产品推荐

