【Win 10 应用开发】RTM版的UAP项目解剖

原文:【Win 10 应用开发】RTM版的UAP项目解剖

Windows 10 发布后,其实SDK也偷偷地在VS的自定义安装列表中出现了,今天开发人员中心也更新了下载。正式版的SDK在API结构上和以前预览的时候是一样的,只是版本变成10240罢了,所以大家不要问老周有什么新的API。

API虽然没变,但VS中的应用程序项目是有了新变化。毕竟以前都是预览的,而现在是“正规军”,以前练兵时都用土豆枪,现在都是真刀真枪干了,故而应用程序项目是有变化的。

以前老周跟大家讲的修改项目模板,去掉遥测类库的方法仅仅是针对预览版的,现在我们无须这么做,在新建项目时,你可以在新建对话框中选择是否需要遥测。如下图。

如果我在创建项目时没有启用遥测,而项目已经创建了,后来我又想添加遥测怎么办呢。很Easy,只要在项目名称上右击鼠标,选择“添加Application Insights 遥测...”菜单即可。

下面再看应用程序项目的另一个重点——引用。

有人会问,引用有啥好看的,玩.net的人谁不知道。别急,这次的UAP项目的引用方式比较有趣。先看截图。

有没有注意到什么不同了吗? 首先,肯定少不了Universal Windows这个通用API集合,这个和以前是一样的,我记得曾经给大家介绍过Win 10 API集合是通过API协定来归档的,还记得吧?不记得就算了,不影响你写代码。

除了UWP平台提供的UAP - API,我们知道还有一个.NET的类库集,不过大家注意名字,现在不是叫.NET for Windows Store App了,现在叫.NET Core for Universal windows platform。有人要问了,有区别吗,不是改了个名字而已。当然没那么简单,这个新的.NET Core版本号是5.0,以前是4.5。当然这不是关键,关键是有.net类型以前不可以用,但现在可以用了。比如这个:System.IO.IsolatedStorage。

当然绝大多数都一样,但Windows App是强制编译为本地代码的,估计这个新的core是出于这个用途吧。反正不影响我们写代码。

但是,我要说的,是让大家仔细观察上面的截图,有没有发现Microsoft.NETCore.UniversalWindowsPlatform这个引用的图标比较另类?它的图标和其他的引用不同。

如果你现在双击它,是不能在对象浏览器中查看的。

但你可以在对象浏览器中选择“.NET for Windows Universal”来查看。

为什么那个家伙那么有个性呢,图标要与众不同呢? 你有没有发现项目里面有个叫project.json的文件,是JSON格式的,打开它之后,你会有惊喜。

{
  "dependencies": {
    "Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0"
  },
  "frameworks": {
    "uap10.0": {}
  },
  "runtimes": {
    "win10-arm": {},
    "win10-arm-aot": {},
    "win10-x86": {},
    "win10-x86-aot": {},
    "win10-x64": {},
    "win10-x64-aot": {}
  }
}

看到上面内容,你明白为什么.net for UWP的引用图标另类了吧。这不是明摆着吗,这个引用是通过这个JSON文件来配置的。

再细心看看,你还会发现,这个project.json文件的生成操作为none,不复制。

意思是说,这家伙是可有可无的了,于是,我们把这个project.json从项目中排除,注意是排除,不是删除,不要急着删,不然你会后悔的。

排除这个JSON文件后,你再生成一下项目,成功,没有报错。

接下来,你到项目所在的文件夹下,把那个project.json文件删除(还有一个project.lock.json也删除),只要放进回收站就可以了,切记!

然后,再重新生成一下项目,这时候,你会发现大祸临头了。

由此可以看到,.NET for UWP的引用是通过这个JSON文件来描述的,但这个文件不一定要包括中项目中,只要它位于项目的目录下就可以了。

经过我后续实验发现:

1、project.json和project.lock.json同时存在时,编译正常。

2、project.json删除,project.lock.json存在时,编译正常。

3、project.json存在,project.lock.json存在时,编译正常。

4、只要project.json存在即可以成功编译,会自动生成project.lock.json文件。

5、如果project.json和project.lock.json都不存在,编译出错。并且在项目的引用列表中不见了.NET for UWP。

至于这个project.json的具体作用,还是等官方参考文档完善了才知道。但从上面的测试来看,这个JSON应该是用来描述.net for UWP的引用的。

当然了,我们实际开发中,可以不必理会这个文件,照旧写代码就OK了。

时间: 2024-10-05 04:58:47

【Win 10 应用开发】RTM版的UAP项目解剖的相关文章

【Win 10应用开发】如何知道UAP在哪个平台上运行

原文:[Win 10应用开发]如何知道UAP在哪个平台上运行 面向22世纪的现代化应用程序可以同时在多种设备上运行,于是有朋友会有一个疑问:有时候,我们还真的需要判断一下,UAP应用程序在哪个平台上运行.尽管大多情况下我们不必要这样做,但某些特殊情况还得考虑.比如一串数据列表,我希望如果在桌面上运行时就以横向列表展现:但要是运行在手机上就以纵向列表展现. 也就是说,其实我们只需分析两种情况即可: 一.桌面.(台式机.笔记本.平板.游戏机.发广告专用机.导航器……) 二.移动环境.其实就是手机.

【Win 10应用开发】如何知道当前APP在哪个平台设备上运行

[Win 10应用开发]如何知道当前APP在哪个平台设备上运行 在做Win10开发的时候,我们可能经常会需要获得当前程序在在哪个平台设备上运行,用于UI和相关API的调用,那么可以通过什么方式知道当前APP运行的平台呢? 今天这里提供两个方法给大家做参考: 方法一:DeviceFamily 通过Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamily,来获取当前的平台设备,目前只可以得到两个值Windows.Mobile或Wind

【Win 10 应用开发】打印UI元素

原文:[Win 10 应用开发]打印UI元素 Windows App支持将UI界面进行打印的功能,这与浏览器中的打印网页的用途相近,其好处就是“所见即所得”,直接把界面上呈现的内容打印下来,比重新创建打印图像方便得多. 要在通用App中实现打印,主要依靠以下几个类型: PrintManager:位于Windows.Graphics.Printing命名空间,主要负责显示打印对话框,设置打印源等操作.在使用时,首先调用GetForCurrentView静态方法得到一个PrintManager实例:

【Win 10应用开发】实现全屏播放的方法

原文:[Win 10应用开发]实现全屏播放的方法 有人会问,以前的MediaElement控件不是有现成的一排操作按钮吗?而且可以直接进入全屏播放.是的,我们知道,以往的Store App都是在全屏模式下运行的,只要MediaElement控件填满整个窗口,就等于全屏播放了,但是,Win10应用是窗口化的,将MediaElement控件的IsFullWindow属性设置为true后,就会这样: 从上面的截图看,MediaElement控件只是覆盖整个窗口而已,并没有实现全屏.那有办法让它全屏播放

【Win 10 应用开发】Toast通知激活应用——前台&后台

原文:[Win 10 应用开发]Toast通知激活应用--前台&后台 老周最近热衷于讲故事,接下来还是讲故事时间. 有人问我:你上大学的时候,有加入过学生会吗?读大学有没有必要加入学生会? 哎哟,这怎么回答呢,从短期来说,加入学生会有点用,至少可以娱乐一下,运气好的话,说不定能遇到红颜知己,但这概率相当低.从长远发展看嘛,是没什么用.老周当年读了四年本科,在学生会混了四年,什么名堂也没混出来. 一方面老周向来不求虚名,所以也没去参选所谓的什么部长.主席之类的,这些“官衔”听起来很高大上,实际上很

【Win 10 应用开发】导入.pfx证书

这个功能其实并不常用,一般开发较少涉及到证书,不过,简单了解一下还是有必要的. 先来说说制作测试证书的方法,这里老周讲两种方法,可以生成用于测试的.pfx文件. 产生证书,大家都知道有个makecert工具.好,我们先用这个工具来生成一个证书,并存放到当前用户的证书存储中.打开VS的开发人员命令提示符,然后输入: makecert -n "CN=中国好男人" -pe -sr CurrentUser -ss My -b 01/01/2016 -e 12/31/2018 -n 表示证书的标

【Win 10 应用开发】启动远程设备上的应用

这个功能必须在“红石-1”(build 14393)以上的系统版中才能使用,运行在一台设备上的应用,可以通过URI来启动另一台设备上的应用.激活远程应用需要以下前提: 系统必须是build 14393或以上版本,UWP应用必须使用14393或以上版本的SDK开发. 被启动的应用应当支持协议激活,比如Cortana的协议URI为:[ms-cortana:],当然如果是你自己开发的应用,可以自己定义一个协议,名字随便取,不要跟系统的协议或别人的应用冲突就行,比如:[haha:][zxzx:]等. 必

【Win 10应用开发】Adaptive磁贴模板的XML文档结构

在若干天之前,老周给大家讲了Adaptive Toast通知的XML模板,所以相应地,今天老周给大家介绍一下Adaptive磁贴的新XML模板. 同样道理,你依旧可以使用8.1时候的磁贴模板,在win 10的API中也是支持的,此外,Win10 App还支持全新的自适应磁贴模板,本文老周就给大家先讲一下基本结构,下一篇文章中咱们再说一说复杂排版. 应用程序的图标可以分为两类:第一类是应用商店上专用的,就是你的应用提交到商店后,给用户看的图标:另一类就是应用本身的一些图标或磁贴. 磁贴其实也就这么

win 10 抢先预览版

================================================================== 第一部分:安装 使用windows 10技术预览版光盘启动. 安装界面的整体风格和windows8类似. 仔细来看,界面风格还是有细微的变化的,显得更加时尚. windows 10技术预览版的设置界面. 进入系统后,可以看到右下角版本号是9841,注意这里和windows 8不同的是,安装完成后,直接进入传统桌面. ========================