Xamarin.Forms使用Live Player时嵌入图片处理异常求助
我之前也踩过Xamarin Live Player的坑,这工具确实便捷但限制超多,你碰到的这个NInterpret.InterpretedObject类型不匹配问题,本质是它的解释执行机制没法正确解析嵌入式图片的加载逻辑,毕竟和正式构建的编译执行逻辑完全不一样。给你几个亲测有效的解决办法:
切换到平台原生资源引用:
如果之前是把图片设为EmbeddedResource,通过ImageSource.FromResource加载的话,建议把图片移到对应平台的资源目录:Android放Resources/drawable,iOS放Resources文件夹,然后在XAML里直接引用文件名:<Image Source="your_image.png" />Live Player对这种原生资源的支持稳定很多,不会出现类型转换问题。
后台代码显式加载嵌入式资源:
要是必须用嵌入式资源,别在XAML里直接绑定或静态引用,转到后台代码手动加载后赋值给Image控件:yourImageControl.Source = ImageSource.FromResource("YourProjectNamespace.Images.your_image.png", typeof(YourPageClass).Assembly);这种显式加载的方式能避开Live Player解释器的类型解析bug。
开发阶段临时用本地文件路径:
调试时可以把图片放到本地文件夹,用ImageSource.FromFile加载,等正式构建再切回嵌入式资源。比如:yourImageControl.Source = ImageSource.FromFile(@"C:\Dev\YourProject\Images\your_image.png");这种方式Live Player能直接读取文件,不会触发类型不匹配异常。
另外提一句,Xamarin Live Player早就被微软弃用停止维护了,长期开发的话建议换成Xamarin Hot Reload,它的兼容性和功能都强很多,资源处理逻辑也更贴近正式构建效果。
你提到的错误日志:
LogEntry: Time=2018. 05. 04. 9:42:31 +02:00, Level=Error, Title=Visualization Error, Message=Object of type 'NInterpret.InterpretedObject' doesn't match target type 'Xamarin.Forms.Xaml....
内容的提问来源于stack exchange,提问作者ZorgoZ

