已添加Microsoft.CSharp包仍遇CS0656编译错误的Xamarin.Forms问题
解决Xamarin.Forms .NET Standard 2.0项目中CS0656编译错误(剩余dynamic赋值报错)
针对你遇到的问题——已添加Microsoft.CSharp包后仍有部分dynamic赋值代码报CS0656错误,可以尝试以下排查和解决步骤:
确认Core项目的NuGet包正确安装
不要仅手动修改.csproj文件,右键Core项目→管理NuGet程序包,确认Microsoft.CSharp(版本4.7.0)已成功安装到该项目。之后右键解决方案→还原NuGet包,确保依赖包完全下载并引用。彻底清理并重建解决方案
- 执行菜单→生成→清理解决方案
- 手动删除所有项目下的
bin和obj文件夹(避免残留编译缓存) - 重启Visual Studio,再重新生成整个解决方案
调整dynamic代码的写法
由于.NET Standard 2.0对dynamic结合JObject的编译支持存在兼容性细节问题,可以换用非动态的赋值方式绕过:// 替换原dynamic赋值代码 JObject values = new JObject(); values["LANGUAGE"] = _localize.GetCurrentCultureInfo().TwoLetterISOLanguageName.ToUpper();如果坚持使用
dynamic,请检查Core项目中Newtonsoft.Json的版本,确保使用兼容.NET Standard 2.0的稳定版本(如13.0.1及以上)。检查工具链和目标框架
- 确认Core项目的目标框架确实是
.NET Standard 2.0(右键项目→属性→应用) - 更新Visual Studio的Xamarin工具到最新版本(菜单→帮助→检查更新),旧版本工具对.NET Standard动态类型的支持可能存在bug
- 确认Core项目的目标框架确实是
内容的提问来源于stack exchange,提问作者Matt W
相关产品推荐
相关产品推荐

