为何UWP应用共享代码中的Dependencies节点在VS2017更新后被移除?
解决VS2017 15.6.4中Xamarin Forms UWP项目Dependencies节点缺失导致SkiaSharp失效的问题
我之前遇到过一模一样的版本差异问题,VS2017 15.6.4确实对Xamarin Forms项目结构做了调整——直接移除了共享代码区域的Dependencies节点,这本质是依赖管理逻辑的变化,你的SkiaSharp代码失效就是因为没跟上这个调整节奏。下面是具体的解决步骤:
第一步:给UWP项目单独安装SkiaSharp平台适配包
现在共享项目不再统一管控依赖,每个平台项目需要单独安装对应平台的SkiaSharp包:
- 右键点击你的UWP项目(注意不是共享代码项目),选择「Manage NuGet Packages」
- 切换到「Browse」标签,搜索并安装
SkiaSharp.Views.Forms和SkiaSharp.Views.UWP,建议选择和你在15.6.2版本中使用的相同版本,避免版本冲突 - 安装完成后,去UWP项目的「References」目录下确认这两个包已被正确添加
第二步:检查MainPage.xaml的命名空间与控件引用
如果你的MainPage.xaml中直接使用了SkiaSharp控件,务必确保命名空间声明正确:
xmlns:skia="clr-namespace:SkiaSharp.Views.Forms;assembly=SkiaSharp.Views.Forms"
控件使用也要对应这个命名空间,示例代码如下:
<skia:SKCanvasView x:Name="canvasView" PaintSurface="OnCanvasViewPaintSurface" />
第三步:调整依赖管理思路
15.6.4版本把共享项目的Dependencies节点整合进了各平台项目的NuGet引用体系,所以不用再纠结共享区的节点是否存在。只要每个平台项目(尤其是UWP)都安装了对应平台的SkiaSharp包,代码就能正常运行。如果之前共享项目里有手动添加的依赖引用,建议直接删除,全部改用NuGet管理,这样能避免版本不一致的问题。
按照这个流程操作后,你的SkiaSharp测试代码应该就能在MainPage.xaml中正常工作了。
内容的提问来源于stack exchange,提问作者user274610
相关产品推荐
相关产品推荐

