现有Xamarin项目加载异常需迁移,创建新项目时VS 2017崩溃
解决Xamarin项目加载失败&VS崩溃的实操方案
看你遇到的情况——VS2017多次更新后,旧Xamarin项目除了Portable项目之外全加载失败,提示"needs migration",重载还抛异常,新建Xamarin项目直接让VS崩掉,加上这段时间你还做过ASP.NET Core开发,大概率是组件损坏、项目格式不兼容或者缓存冲突导致的,给你按优先级整理几个修复步骤:
1. 先彻底修复VS2017的Xamarin组件
多次更新VS最容易搞坏Xamarin的组件,这是最常见的诱因:
- 打开Visual Studio Installer,找到你的VS2017实例,点修改
- 在工作负载里找到移动开发.NET,确保所有子组件(Xamarin.iOS、Xamarin.Android这些)都勾选上
- 如果本来就是勾选状态,先取消勾选点修改卸载,之后再重新勾选安装一遍(相当于彻底重装Xamarin组件)
- 装完重启VS,再试试加载项目
2. 手动迁移项目文件(针对"needs migration"提示)
如果项目提示需要迁移,说明旧的.csproj格式和当前VS版本不匹配,可以手动改:
- 右键加载失败的项目,选编辑.csproj文件(要是没这个选项,直接去文件管理器里找项目的.csproj文件打开)
- 对比正常的Xamarin项目.csproj内容(要是你新建不了,就找同事或者网上的模板),把旧项目里的过时节点替换:
- 比如旧的Xamarin.Android项目可能开头是旧的格式,新的会是
<Project Sdk="Microsoft.NET.Sdk"> - 重点替换Sdk声明和目标框架节点,比如
<TargetFramework>monoandroid12.0</TargetFramework>(版本号按你实际装的来)
- 比如旧的Xamarin.Android项目可能开头是旧的格式,新的会是
- 改完保存,回到VS重新加载项目
3. 清理VS缓存和Xamarin缓存,解决冲突
ASP.NET Core开发留下的缓存可能和Xamarin组件打架:
- 关掉所有VS窗口,删除这几个目录:
%LOCALAPPDATA%\Microsoft\VisualStudio\15.0_*\ComponentModelCache(15.0是VS2017的版本号,后面的*是你的实例ID)%LOCALAPPDATA%\Xamarin(Xamarin的缓存目录,删了之后重启VS会自动重建)%USERPROFILE%\AppData\Roaming\Microsoft\VisualStudio\15.0_*\Templates(模板缓存,解决新建项目崩溃)
- 打开命令提示符,运行
devenv /resetuserdata重置VS用户数据(注意:这个操作会重置你的VS主题、快捷键这些设置,最好先备份一下) - 重启VS,再试新建项目或者加载旧项目
4. 检查.NET Core和Xamarin的版本兼容性
要是装了多个.NET Core版本,可能和Xamarin的依赖冲突:
- 打开VS的工具>选项>项目和解决方案>.NET Core,看看已安装的SDK版本
- 确保你的Xamarin项目用的.NET版本和已装的SDK兼容(比如Xamarin.Forms一般需要.NET Standard 2.0及以上,对应.NET Core 2.1+)
- 有不兼容的SDK就去控制面板卸载,只留和Xamarin匹配的版本
内容的提问来源于stack exchange,提问作者mshwf
相关产品推荐
相关产品推荐

