VS2017升级后新建Xamarin.Forms项目出现CS0518等异常错误
解决VS 2017 v15.7.2升级后Xamarin.Forms项目CS0518错误的方案
我之前踩过几乎一模一样的坑,给你几个亲测有效的解决思路:
1. 彻底清理NuGet缓存并手动修复项目文件
这是最常见的解决路径,NuGet缓存的旧包经常会导致版本冲突:
- 先关闭Visual Studio,删除解决方案根目录下的
packages文件夹,再删掉每个项目里的bin和obj目录(这些都是编译临时文件,删除后不会影响项目本身) - 重新打开VS,依次点击「工具」→「选项」→「NuGet包管理器」→「常规」,点击「清空所有NuGet缓存」按钮
- 右键共享项目选择「卸载项目」,接着右键卸载后的项目选择「编辑XX.csproj」,找到
<PackageReference Include="NETStandard.Library" Version="2.0.1" />这一行,把版本号改成2.0.3,保存后重新加载项目,再尝试编译
2. 检查并匹配.NET Core SDK版本
VS 2017 v15.7.x对.NET Core SDK版本有特定要求,版本不匹配会导致NETStandard包识别异常:
- 打开命令提示符,输入
dotnet --version查看当前安装的SDK版本 - 如果版本低于2.1.x,打开VS安装程序选择「修改」,在「单个组件」里找到对应的.NET Core SDK(比如2.1.500及以上版本)完成安装,重启VS后再测试
3. 重置VS项目模板(解决新建项目默认用旧版本的问题)
如果新建项目默认还是绑定NETStandard.Library 2.0.1,大概率是VS的项目模板出了问题:
- 以管理员身份打开「Visual Studio 2017 开发者命令提示符」
- 依次运行以下两个命令:
注意:devenv /installvstemplates devenv /resetuserdatadevenv /resetuserdata会重置你的VS用户自定义设置(比如布局、快捷键等),如果有重要的自定义配置,建议先备份再执行
问题本质说明
这个错误的核心是VS升级后,项目模板里的NETStandard包版本没有同步更新,再加上NuGet缓存的旧包和新项目的包版本冲突,导致共享项目无法正常识别最新的NETStandard库,进而引发System.Void这类预定义类型找不到的编译错误。
内容的提问来源于stack exchange,提问作者Donna
相关产品推荐
相关产品推荐

