【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了。
【Win 10 应用开发】RTM版的UAP项目解剖的更多相关文章
- 【Win 10应用开发】认识一下UAP项目
Windows 10 SDK预览版需要10030以上版本号的Win 10预览版系统才能使用.之前我安装的9926的系统,然后安装VS 2015 CTP 6,再装Win 10 SDK,但是在新建项目后, ...
- 【Win 10应用开发】如何知道UAP在哪个平台上运行
面向22世纪的现代化应用程序可以同时在多种设备上运行,于是有朋友会有一个疑问:有时候,我们还真的需要判断一下,UAP应用程序在哪个平台上运行.尽管大多情况下我们不必要这样做,但某些特殊情况还得考虑.比 ...
- 【Win 10 应用开发】启动远程设备上的应用
这个功能必须在“红石-1”(build 14393)以上的系统版中才能使用,运行在一台设备上的应用,可以通过URI来启动另一台设备上的应用.激活远程应用需要以下前提: 系统必须是build 14393 ...
- 【Win 10 应用开发】导入.pfx证书
这个功能其实并不常用,一般开发较少涉及到证书,不过,简单了解一下还是有必要的. 先来说说制作测试证书的方法,这里老周讲两种方法,可以生成用于测试的.pfx文件. 产生证书,大家都知道有个makecer ...
- 【Win 10应用开发】Adaptive磁贴模板的XML文档结构
在若干天之前,老周给大家讲了Adaptive Toast通知的XML模板,所以相应地,今天老周给大家介绍一下Adaptive磁贴的新XML模板. 同样道理,你依旧可以使用8.1时候的磁贴模板,在win ...
- 【Win 10 应用开发】在代码中加载文本资源
记得前一次,老周给大伙,不,小伙伴们介绍了如何填写 .resw 文件,并且在 XAML 中使用 x:Uid 标记来加载.也顺便给大伙儿分析了运行时是如何解析 .resw 文件的. 本来说好了,后续老周 ...
- 【Win 10应用开发】延迟共享
延迟共享是啥呢,这么说吧,就是在应用程序打开共享面板选择共享目标时,不会设置要共享的数据,而是等到共享目标请求数据时,才会发送数据,而且,延迟操作可以在后台进行. 这样说似乎过于抽象,最好的诠释方法, ...
- 【Win 10 应用开发】Toast通知激活应用——前台&后台
老周最近热衷于讲故事,接下来还是讲故事时间. 有人问我:你上大学的时候,有加入过学生会吗?读大学有没有必要加入学生会? 哎哟,这怎么回答呢,从短期来说,加入学生会有点用,至少可以娱乐一下,运气好的话, ...
- 【Win 10 应用开发】InkToolBar——涂鸦如此简单
从WPF开始,就有个InkCanvas控件,封装了数字墨迹处理相关的功能,Silverlight到Win 8 App,再到UWP应用,都有这个控件,所以,老周说了3688遍,凡是.net基础扎实者,必 ...
随机推荐
- UE4 AI BehaviorTree 各个节点执行顺序总结
一个游戏DEMO的AI部分 用到行为树组件如上 主要说一下这两个组件 一个装饰(类似过滤器) 一个服务(代码逻辑与Blackboard交互) Service分为 大碰撞 和 小碰撞 两个碰撞范围, 大 ...
- 转:界面之下:还原真实的 MVC、MVP、MVVM 模式
前言 做客户端开发.前端开发对MVC.MVP.MVVM这些名词不了解也应该大致听过,都是为了解决图形界面应用程序复杂性管理问题而产生的应用架构模式.网上很多文章关于这方面的讨论比较杂乱,各种MV*模式 ...
- haha3
YOU - fhasd - fdks jf > jd sfkjd sf </div><div><span >print "helloworld&qu ...
- Linux培训薪资过万是真事 星创客为嵌入式高端培训树标杆
10月26日,是华清远见星创客嵌入式精英训练营首期班结业后的第15个工作日,虽然目前的学员就业成果已经超出了训练营老师们的预期,但就业工作仍然在继续进行着没有停止. 从训练营老师方面得出的统计数据,截 ...
- IntelliJ IDEA全键盘操作
IntelliJ IDEA 如何做到全键盘操作呢? 1.自定义快捷键实现全屏操作 你可以设置自定义快捷键进入全屏操作,并实现各个窗口之间的切换.这样,你就可以告别小窗口的时代,体验全屏显示的效果了!( ...
- css实现一行文字居中,多行文字居左
第一种方法: <style> *{margin:0;padding:0;} .box{width:500px;height:300px;border:1px solid #000;text ...
- winform下如何实现右下角弹窗效果
[DllImport("user32")] private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, in ...
- <十六>JDBC_使用 DBUtils 编写通用的DAO
接口 : DAO<T>.java import java.sql.Connection;import java.sql.SQLException;import java.util.List ...
- 【TJOI&HEOI2016】【Bzoj4551】树
这道题是可以用树链剖分来做的,但其实有比它更加简单的做法--并查集. 可以想到,这类题的一种常见做法是离线处理,先全部读入,再从后往前处理,每次遇到标记操作,就把这个点的标记次数减一,到零以后就把这个 ...
- 关于Node.js的总结
Node是个啥? 1.Node 是一个服务器端 JavaScript 解释器,可是真的以为JavaScript不错的同学学习Node就能轻松拿下,那么你就错了,总结:水深不深我还不知道,不过确实不浅. ...