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

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

原文:【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了。

 

目录
相关文章
|
存储 安全 前端开发
USB Image Tool:Windows下的直接写盘利器 【开源硬件佳软介绍 #2】
这个问题,我们从磁盘结构讲起。磁盘内部所有的存储区域,必然分为分区表和数据区域两大块。而数据区域按分区表分区后,每个分区还被文件系统封装和管理[注B]:
2209 1
USB Image Tool:Windows下的直接写盘利器 【开源硬件佳软介绍 #2】
|
移动开发 JavaScript 前端开发
开源项目推荐:SCADA组态软件Qt,kanzi,C#,MFC和WEB大全(收藏版)
开源项目推荐:SCADA组态软件Qt,kanzi,C#,MFC和WEB大全(收藏版)
3888 0
|
3天前
|
人工智能 IDE 前端开发
首款 AI Native IDE Framework,OpenSumi 3.0 正式发布!
展望未来,开发者只需定义明确的目标,例如添加新的接口功能,而 AI Agent 则有能力在一个具备运行环境的Workspace 中,自主操控编辑器、终端和浏览器等工具,自动化完成一系列标准的软件开发任务。
91 1
|
3天前
|
Windows
Qt 5.14.2 打造跨平台应用的秘诀:用Visual Studio 2022和Qt 5.14.2轻松创建你的首个QT项目
Qt 5.14.2 打造跨平台应用的秘诀:用Visual Studio 2022和Qt 5.14.2轻松创建你的首个QT项目
|
11月前
|
IDE 编译器 开发工具
瑞萨IDE:CS+ for CC下载、安装和基础使用
本篇博文将介绍:CS+ for CC安装和基础使用(本篇文章以:RH850 系列MCU为例)。
|
监控 人机交互 芯片
西门子S7-200 SMART的功能和特点有哪些?STEP7-Micro/WIN SMART编程软件简介
西门子S7-200 SMART是西门子公司针对中国小型自动化市场客户需求设计研发的一款高性价比小型PLC产品。S7-200 SMART CPU将微处理器、集成电源、输入输出电路组合到一个设计紧凑的外壳中,已形成功能强大的小型plc。面板包含电源接线端子、直流24V电源输出端子、数字量输入输出接线端子、CPU状态指示灯、IO状态指示灯、存储卡插槽、以太网接口、RS485接口等。
西门子S7-200 SMART的功能和特点有哪些?STEP7-Micro/WIN SMART编程软件简介
|
存储 Linux 测试技术
RISC-V大赛开发套件详解(八):D1 Dock Pro开发板用户指南
通过上期介绍,相信各位开发者已经对D1 Dock Pro开发板有了初步的认识。本期我们将在此基础上,为大家带来D1 Dock Pro开发板用户指南,讲解说明开发板规格和各个接口,最后带大家上手搭建开发环境。
564 0
RISC-V大赛开发套件详解(八):D1 Dock Pro开发板用户指南
|
自然语言处理 JavaScript IDE
HUAWEI DevEco Studio 3.0 Beta3 全面支持 OpenHarmony 应用开发
HUAWEI DevEco Studio 自 2020 年 9 月发布以来,经过 10 次升级,不断为 HarmonOS 应用开发增强能力。4 月 18 日,DevEco Studio 3.0 Beta3 版本上线,该版本新增 OpenHarmony 应用开发场景,全面支持开发者开发 OpenHarmony 应用及服务。
339 0
HUAWEI DevEco Studio 3.0 Beta3 全面支持 OpenHarmony 应用开发
|
Linux 程序员 C#
艾伟:在Mono平台开发前你应该知道
  在Mono平台开发前应该做的第一个事情就是,调整好心情,降低期望值:   对于Linux本地C程序员而言,由于习惯了疯狂和有魔力的本地C程序员开发,因此对于Mono提供的诸多限制可能不太满意。大体而言,Mono和.Net程序一样,属于框架开发的范畴,对于框架开发,最好在框架规定的范围内工作,否则会陷入孤立无缘的境地。
997 0