Win10 UWP系列:关于错误 0x80073CF9及一个小bug的解决
2017-09-21 10:16
357 查看
原文:Win10 UWP系列:关于错误 0x80073CF9及一个小bug的解决最近一直在开发XX的uwp版本,也是边摸索边做,最近遇到几个比较奇怪的问题,记录于此。
1、项目可用部署到PC,但无法部署到手机,提示以下错误:
错误 : DEP0001 : 意外错误: Install failed. Please contact your software vendor. (Exception from HRESULT: 0x80073CF9
为了方便开发,我将常用的类库引用好、默认的几个页面做好,然后导出成项目模板,新建项目时都从这个模板开始。之前掌中汇率也是用这个模板做的,可以正常部署,但新建的这个项目就都无法部署到手机了,两台电脑都不行,奇怪的是部署到PC又是好好的。
既然找不到其他的原因,只能分析Package.appxmanifest文件了,经比较,另一个项目掌中汇率的ProductId与新项目是一样的,因为是从同一个项目模板建的。手机里已经安装了相同ProductId的项目,所以后来的就无法安装了,但我印象里觉得应该是如果id冲突应该会提示卸载之前的app,而PC平台又完全没提示这个错误,真是奇怪。将手机里的掌中汇率卸载或修改新项目的ProductId这个问题就解决了。
2、诡异的ListView的Padding导致无法保存列表位置的问题。
UWP默认的ListView样式,在PC的滚动条比较宽,手机上的很细基本就是一条线。因为ListView默认点击会变色,我不喜欢ListViewItem都有个Padding,就修改了ListViewItem的模板,设置Padding为0。这样就产生了在PC上使用时,滚动条会遮住一部分项内容的问题。于是又将ListView设置了一个Padding,设置为12,0。这样既挡不住内容又不会有背景色了,看起来一切正常。
然后在做一个Master/Detail视图的页面时,诡异的问题出现了。在UWP开发中,为了自适应PC和手机不同宽度的布局,可以采用Master/Detail视图来做,左侧列表,右侧详情。
我在MainPage里放了一个SplitView,用来做汉堡菜单,在SplitView的Content里,放了一个Grid,分为两列,每列放一个Frame,用来显示Master和Detail页面,Master页面里是一个ListView,Detail显示具体内容。目的是这样:
在宽度大于720时,两个Frame同时展示;
宽度小于720时,分为两种情况:
如果Detail页面为空,则只显示Master页面,也就是将第一列宽度设置为*;第二列宽度为0;
如果Detail页面不为空,则只显示Detail页面,将第一列宽度设置为0,第二列宽度为*。
具体实现是用了一个自定义的StateTrigger来进行切换。但诡异的问题是,当点击Master页面的列表,隐藏Master显示Detail后,再返回键返回Master,之前的列表位置变化了,跟之前的项相差三四个位置,不一定,但使用起来很别扭,返回后找不到刚才点的是哪项了。
为了解决这个问题,我怀疑是Master页面里有Pivot,结果去掉也不行,然后新建了一个干净项目,什么样式也没加,只是点击一个按钮设置第一列的宽度为0或*,列表位置就正常了。看来是模板或样式的问题,挨个找吧。经过仔细查找,终于找到原因所在,就是因为给ListView加了一个Padding。把ListView的Padding去掉,就正常了。
说的过程很简单,但花了我几乎半天的时间,但经咨询礼物说开发者郑大神,他也是设置了ListView的Padding,却一切正常。所以可能还是没找到关键问题所在。
去掉了ListView的Padding,滚动条又会遮挡内容了,于是只好把ListViewItem的Padding又加上了……转了好大一个圈又回到了原点……
最近的进度有点慢,博客也没大有时间写了,等手头这个app开发完后会及时总结一下。
3、'System.DateTime'/'System.Decimal' is not a valid Windows Runtime parameter type
在开发后台任务时,如果类中使用了DateTime或decimal等类型,会报以上错误。因为后台任务是一个Windows运行时组件,不支持这些.NET类型,可以把用到这些类设置为internal、protected或者private,或者把DateTime改为DateTimeOffset,decimal改为double。
1、项目可用部署到PC,但无法部署到手机,提示以下错误:
错误 : DEP0001 : 意外错误: Install failed. Please contact your software vendor. (Exception from HRESULT: 0x80073CF9
为了方便开发,我将常用的类库引用好、默认的几个页面做好,然后导出成项目模板,新建项目时都从这个模板开始。之前掌中汇率也是用这个模板做的,可以正常部署,但新建的这个项目就都无法部署到手机了,两台电脑都不行,奇怪的是部署到PC又是好好的。
既然找不到其他的原因,只能分析Package.appxmanifest文件了,经比较,另一个项目掌中汇率的ProductId与新项目是一样的,因为是从同一个项目模板建的。手机里已经安装了相同ProductId的项目,所以后来的就无法安装了,但我印象里觉得应该是如果id冲突应该会提示卸载之前的app,而PC平台又完全没提示这个错误,真是奇怪。将手机里的掌中汇率卸载或修改新项目的ProductId这个问题就解决了。
2、诡异的ListView的Padding导致无法保存列表位置的问题。
UWP默认的ListView样式,在PC的滚动条比较宽,手机上的很细基本就是一条线。因为ListView默认点击会变色,我不喜欢ListViewItem都有个Padding,就修改了ListViewItem的模板,设置Padding为0。这样就产生了在PC上使用时,滚动条会遮住一部分项内容的问题。于是又将ListView设置了一个Padding,设置为12,0。这样既挡不住内容又不会有背景色了,看起来一切正常。
然后在做一个Master/Detail视图的页面时,诡异的问题出现了。在UWP开发中,为了自适应PC和手机不同宽度的布局,可以采用Master/Detail视图来做,左侧列表,右侧详情。
我在MainPage里放了一个SplitView,用来做汉堡菜单,在SplitView的Content里,放了一个Grid,分为两列,每列放一个Frame,用来显示Master和Detail页面,Master页面里是一个ListView,Detail显示具体内容。目的是这样:
在宽度大于720时,两个Frame同时展示;
宽度小于720时,分为两种情况:
如果Detail页面为空,则只显示Master页面,也就是将第一列宽度设置为*;第二列宽度为0;
如果Detail页面不为空,则只显示Detail页面,将第一列宽度设置为0,第二列宽度为*。
具体实现是用了一个自定义的StateTrigger来进行切换。但诡异的问题是,当点击Master页面的列表,隐藏Master显示Detail后,再返回键返回Master,之前的列表位置变化了,跟之前的项相差三四个位置,不一定,但使用起来很别扭,返回后找不到刚才点的是哪项了。
为了解决这个问题,我怀疑是Master页面里有Pivot,结果去掉也不行,然后新建了一个干净项目,什么样式也没加,只是点击一个按钮设置第一列的宽度为0或*,列表位置就正常了。看来是模板或样式的问题,挨个找吧。经过仔细查找,终于找到原因所在,就是因为给ListView加了一个Padding。把ListView的Padding去掉,就正常了。
说的过程很简单,但花了我几乎半天的时间,但经咨询礼物说开发者郑大神,他也是设置了ListView的Padding,却一切正常。所以可能还是没找到关键问题所在。
去掉了ListView的Padding,滚动条又会遮挡内容了,于是只好把ListViewItem的Padding又加上了……转了好大一个圈又回到了原点……
最近的进度有点慢,博客也没大有时间写了,等手头这个app开发完后会及时总结一下。
3、'System.DateTime'/'System.Decimal' is not a valid Windows Runtime parameter type
在开发后台任务时,如果类中使用了DateTime或decimal等类型,会报以上错误。因为后台任务是一个Windows运行时组件,不支持这些.NET类型,可以把用到这些类设置为internal、protected或者private,或者把DateTime改为DateTimeOffset,decimal改为double。
相关文章推荐
- Win10 UWP系列:关于错误 0x80073CF9及一个小bug的解决
- 关于一个bug的解决
- 关于vs2013与office系列软件一起安装出现bug的情况描述以及解决办法——打开vs2013鼠标不动/动不了
- 今天非常高兴,解决了一个关于java类转json时有关联对象而且困扰我很久的BUG
- 关于win10安装软件出现2503、2502错误的解决方法
- Win10 EPLAN新建项目出现“一个内部错误的解决方法”
- 关于win10 php环境配置后运行php文件出现HTTP 错误 401.3 - Unauthorized的解决方法
- 关于出现错误:_tkinter.TclError: couldn't open "E:\Python系列\Python程序\Python安装.gif"tkinter中不能打开GIF格式图片的解决办法
- 转 VS2005程序运行时出现MSVCP80D.dll not found错误解决方法(VS 2005的一个“Bug”)
- 关于vs2013与office系列软件一起安装出现bug的情况描述以及解决办法——打开vs2013鼠标不动/动不了
- 程序员的生活就是每天,在代码中游走,还得不断地调试BUG,不断的积累解决错误的能力,这样才能成为一个合格的程序员!
- bug fixed 系列之四 : 内存错误分析解决
- 关于validator验证的一个错误的解决!
- Win10系统菜单打不开问题的解决,难道是Win10的一个Bug ?
- Silverlight 2 : 关于ListBox的一个Layout Bug及其解决方法
- Myeclipse10.0关于javascript的一个错误提示的Bug:Cannot return from outside a function or method
- Win10 UWP开发系列:开发一个自定义控件——带数字徽章的AppBarButton
- 微软BI 之SSIS 系列 - ETL 转换时关于 Code Page (1252 and 936) 转换错误的原因和解决方法
- Thin的DateChooser代码学习(关于js的函数参数为一个完整的函数以及“对象不支持此属性或方法”错误的解决)(原创,转载请声明)
- VS2005中的一个小BUG:关于Dropdownlist无法Datadinding的解决方法。