Visual Studio 2017社区版v15.6.1及更早版本Xamarin.Forms项目编译无法完成
嘿,我之前也碰到过一模一样的情况——项目跑了好几个月都没问题,突然编译就卡着不动,新建项目也中招,删TEMP、清WebsiteCache都不管用。给你分享几个亲测有效的排查步骤,试试能不能解决:
先做全量清理重建
别直接点Build,右键解决方案选Clean Solution,等清理完再选Rebuild Solution。增量编译的缓存有时候会攒下奇怪的冲突,全量重建能把这些脏数据清掉。统一NuGet包版本,更新组件
打开NuGet包管理器,检查所有项目里的Web Services相关包(比如System.ServiceModel.*系列)和Xamarin.Forms包的版本是不是统一的。如果有的项目用了老版本,有的用了新版本,很容易出兼容性问题。把所有相关包更到同一个稳定版本,然后还原包再重建。重置VS的核心组件缓存
除了你试过的那些目录,还有两个关键缓存目录可以清:- 关掉VS,删除
%LOCALAPPDATA%\Microsoft\VisualStudio\<你的VS版本号>\ComponentModelCache里的所有文件 - 可以选择性删除
%USERPROFILE%\.nuget\packages里Xamarin和Web Services相关的包文件夹,之后右键解决方案选Restore NuGet Packages
这一步能解决很多VS组件加载异常的问题。
- 关掉VS,删除
检查服务引用的配置文件
有时候Web Services的app.config/web.config里会出现重复的system.serviceModel节点,或者绑定配置写错了,导致编译时解析卡住。打开每个Web Services项目的配置文件,仔细检查bindings、client节点有没有格式错误或者重复项,必要的话删掉服务引用重新添加一遍。用安全模式启动VS排查插件问题
第三方插件有时候会偷偷干扰编译进程。打开命令提示符,输入devenv.exe /SafeMode启动VS,然后加载你的项目编译。如果这时候能正常编译,就说明是某个插件搞的鬼,逐个禁用插件排查就行。验证.NET环境和系统变量
确认项目目标的.NET版本和系统安装的一致,比如项目用.NET Framework 4.8,就检查系统有没有装对应的运行时。另外看看系统的PATH环境变量里有没有正确添加.NET相关的路径,有时候环境变量乱了也会导致编译卡壳。
内容的提问来源于stack exchange,提问作者Rhadimer Antigua

