本地构建C#/MVC项目报错,其他开发者无此问题求助
这种情况我之前和团队协作MVC项目时也碰到过,核心问题就是你的本地环境缺少项目依赖的Microsoft.Reporting相关程序集,或者引用配置出了问题。给你一步步排查的方案:
检查NuGet包是否正确安装
右键项目 → 「管理NuGet程序包」,切换到「已安装」标签,看看有没有Microsoft.ReportingServices.ReportViewerControl.WebForms这类Reporting相关的包。如果没有,直接搜索安装对应版本;如果已经有,试着卸载后重新安装——有时候NuGet缓存抽风会导致引用失效。确认本地是否安装了Report Viewer运行时
有些老的MVC项目不会用NuGet引入Reporting组件,而是依赖本地安装的Microsoft Report Viewer控件。你可以去「控制面板 → 程序和功能」里找找有没有「Microsoft Report Viewer 201X Runtime」这类组件,没有的话就下载和项目目标框架匹配的版本安装。排查Git忽略导致的依赖缺失
因为用Git管理,.gitignore可能忽略了packages文件夹或者.csproj.user文件,导致你拉取代码后没有完整的依赖。可以这么操作:- 先删掉本地的
packages文件夹(如果存在的话) - 在Visual Studio里右键解决方案 → 「还原NuGet包」
- 打开项目的
.csproj文件,确认有没有类似下面的引用节点,没有的话手动加上(注意版本号要和项目匹配):<Reference Include="Microsoft.ReportViewer.WebForms, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL"> <HintPath>..\packages\Microsoft.ReportingServices.ReportViewerControl.WebForms.150.1400.0\lib\net40\Microsoft.ReportViewer.WebForms.dll</HintPath> </Reference>
- 先删掉本地的
清理编译缓存后重建
有时候编译缓存会搞出奇怪的错误,试试这几步:- 点击Visual Studio顶部菜单的「生成 → 清理解决方案」
- 然后选择「生成 → 重建解决方案」
- 如果还是不行,手动删掉项目下的
bin和obj文件夹,再重新构建
核对项目目标框架版本
右键项目 → 属性 → 应用程序,看看目标框架是不是和其他开发者一致。比如别人用的是.NET Framework 4.7.2,你如果选了4.6.1,很可能会出现依赖不兼容的问题。
要是以上方法都没用,直接找协作的同事要一份他们本地packages文件夹里的Reporting相关包,复制到你本地对应的路径,再重新添加引用就行。
内容的提问来源于stack exchange,提问作者Ahmed Ali

