课程 预编译框架,开发高性能应用 - 微软技术暨生态大会 2018
微软技术暨生态大会(Tech Summit),2018 年在上海世博中心召开。这是最后一次的 Tech Summit 了;明年开始,中国大陆地区就要和其他国家和地区一样,进行全球 Ignite Tour 了。
我也有幸成为分会场讲师团队的一员,课程是《预编译框架 - 开发高性能应用》。内容就是我博客中与 MSBuild / Roslyn / dotnet / NuGet 相关的内容;我们将利用这些知识打造一个高性能客户端应用。
进入 微软技术暨生态大会 官网可以了解更多内容。如果你和我一样对微软技术富有热情,那么也欢迎你 买票 一起去上海。
关于课程《预编译框架 - 开发高性能应用》
时间:2018 年 10 月 27 日 11:00-11:45 代号:DEV306 难度:L300
利用 Roslyn 在编译期间提前完成收集和修改所需的各种信息,我们能将 .NET 的反射耗时降低到近乎为 0! 当前大多数的框架都离不开反射的支持,但是 .NET 的反射很伤性能,而不用反射又很难支撑大型应用;基于 Roslyn 的预编译框架旨在解决这些性能问题。
本次讲题能学到什么?
体验预编译框架的强大性能
理解 dotnet build 的编译过程
使用 Roslyn 分析和修改项目源代码
如何开发自己的预编译框架
制作源代码引用 NuGet 包(而不是 dll 引用 NuGet 包)
其实此课程的计划课程内容有 2.5 小时,毕竟博客都有好几十篇了呢。算上跟我一起研究这项技术的林德熙的与 Roslyn 相关的博客,那就更多了,而且还在持续增加中。不过实际分会场课程中内容众多,留给每个讲师的时间只有 45 分钟,必须减少和压缩课程内容。
于是,实际课程会以入门为主,进阶内容将作为资料线下学习。注意:即便是“入门”,难度也依然是 L300(难度范围为 L100-L400),所以你必须拥有一定的 .NET 开发知识和一些应用开发经验才会理解课程内容。如果你的经验更偏客户端应用开发,那么更能体会本课程内容的目的。
额外的,彩排在 26 号 9:40-10:00。
课程大纲
课程大纲是为 2 小时的课程而设计的。所以实际上我只会讲大部分内容,以下所有动手实验和演示的地方都会略过,代之以提前运行和编写的结果。
实际课程中会略过的部分以斜体表示。
引入
收集:反射 VS 配置文件 VS 预编译
调用:直接调用 VS 最快反射 VS 预编译
程序集个数:1 个 VS ……
一批性能数据
概览
源码包
编译期类
类模板
扩展
了解源码包 SourceYard 和预编译框架 SourceFusion
学会编写编译期代码以提升应用性能
目录
预编译框架的原理
多个 API 的展示
教学
理解 dotnet build 的编译过程
动手实验:SourceYard 源码包简化版
学习使用 Roslyn 分析源代码
动手实验:SourceFusion 预编译框架简化版
理解 csproj 文件格式
理解编译过程
理解 NuGet 打包原理
编译期间执行一个 exe 程序
在 exe 程序中接收参数并干预编译结果
语法可视化窗格
分析 C# 语法树
在编译期间执行代码
在编译期间收集程序集中具有特定标记的所有类型
生成代码以快速访问这些类型的特定方法
目标:学会使用编译期代码代替反射以提升应用的执行性能
教学目录
回顾
回顾 dotnet build 的编译过程和 Roslyn 分析源码
SourceYard 和 SourceFusion 的开源仓库,欢迎加入
关于讲师 —— 吕毅
你可以进入 微软技术暨生态大会 - 大会日程 页面,然后点击 “演讲嘉宾”。
在这里,你可以看到主题演讲、分会场课程以及动手实验室的各位讲师,可以去了解每一位讲师以及他们的课程。当然,你也可以看到我。
欢迎你的加入
最后,欢迎你一起参加微软技术暨生态大会,我们一起去与微软大咖,各位微软 MVP,社区技术牛人交流技术。
购票
微软粉丝之夜报名(目前名额已满)
课程课件使用 希沃白板 5 制作,这是一款专门针对教学场景设计的互动课件工具。
相关链接
SourceYard 源码包
将 .NET Core 项目打一个最简单的 NuGet 源码包,安装此包就像直接把源码放进项目一样 - 吕毅
Roslyn 如何基于 Microsoft.NET.Sdk 制作源代码包 - 林德熙
SourceFusion 预编译框架
理解 C# 项目 csproj 文件格式的本质和编译流程 - 吕毅
将 WPF、UWP 以及其他各种类型的旧 csproj 迁移成基于 Microsoft.NET.Sdk 的新 csproj - 吕毅
新 csproj 对 WPF/UWP 支持不太好?有第三方 SDK 可以用!MSBuild.Sdk.Extras - 吕毅
如何使用 MSBuild Target(Exec)中的控制台输出 - 吕毅
如何在 MSBuild Target(Exec)中报告编译错误和编译警告 - 吕毅
在制作跨平台的 NuGet 工具包时,如何将工具(exe/dll)的所有依赖一并放入包中 - 吕毅
如何编写基于 Microsoft.NET.Sdk 的跨平台的 MSBuild Target(附各种自带的 Task) - 吕毅
Roslyn 如何使用 MSBuild Copy 复制文件 - 林德熙
每次都要重新编译?太慢!让跨平台的 MSBuild/dotnet build 的 Target 支持差量编译 - 吕毅
解读 Microsoft.NET.Sdk 的源码,你能定制各种奇怪而富有创意的编译过程 - 吕毅
帮助官方 NuGet 解掉 Bug,制作绝对不会传递依赖的 NuGet 包 - 吕毅
项目文件中的已知属性(知道了这些,就不会随便在 csproj 中写死常量啦) - 吕毅
项目文件中的已知 NuGet 属性(使用这些属性,创建 NuGet 包就可以不需要 nuspec 文件啦) - 吕毅
如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包 - 吕毅
如何创建一个基于命令行工具的跨平台的 NuGet 工具包 - 吕毅
Roslyn 通过 Target 修改编译的文件 - 林德熙
Roslyn 使用 WriteLinesToFile 解决参数过长无法传入 - 林德熙
Roslyn 如何在 Target 引用 xaml 防止文件没有编译 - 林德熙
Roslyn 通过 nuget 统一管理信息 - 林德熙
Roslyn 使用 Target 替换占位符方式生成 nuget 打包 - 林德熙
MSBuild/Roslyn 和 NuGet 的 100 个坑 - 吕毅
Roslyn 通过 Nuget 引用源代码 在 VS 智能提示正常但是无法编译 - 林德熙
都是用 DllImport?有没有考虑过自己写一个 extern 方法? - 吕毅
.NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换 - 吕毅
Roslyn 入门:使用 Visual Studio 的语法可视化(Syntax Visualizer)窗格查看和了解代码的语法树 - 吕毅
Roslyn 静态分析 - 林德熙
Roslyn 入门:使用 Roslyn 静态分析现有项目中的代码 - 吕毅
Roslyn 入门:使用 .NET Core 版本的 Roslyn 编译并执行跨平台的静态的源码 - 吕毅
Roslyn 语法树中的各种语法节点及每个节点的含义 - 吕毅
Roslyn 通过 Nuget 管理公司配置 - 林德熙
Roslyn 在项目文件使用条件判断 - 林德熙
更多 MSBuild / Roslyn / dotnet / NuGet 相关的知识
理解 Roslyn 中的红绿树(Red-Green Trees) - 吕毅
Roslyn 的确定性构建 - 吕毅
Roslyn 节点的 Span 和 FullSpan 有什么区别 - 林德熙
Roslyn NameSyntax 的 ToString 和 ToFullString 的区别 - 林德熙
自动将 NuGet 包的引用方式从 packages.config 升级为 PackageReference - 吕毅
如何最快速地将旧的 NuGet 包 (2.x, packages.config) 升级成新的 NuGet 包 (4.x, PackageReference) - 吕毅
阻止某个 NuGet 包意外升级 - 吕毅
语义版本号(Semantic Versioning) - 吕毅
使用 MSBuild 响应文件 (rsp) 来指定 dotnet build 命令行编译时的大量参数 - 吕毅
Roslyn 使用 Directory.Build.props 管理多个项目配置 - 林德熙
Roslyn 使用 Directory.Build.props 文件定义编译 - 林德熙
在 Visual Studio 的解决方案资源管理器中隐藏一些文件 - 吕毅
使用链接共享 Visual Studio 中的代码文件 - 吕毅
为 Visual Studio 使用通配符批量添加项目文件 - 吕毅
(1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序 - 吕毅
dotnet core 通过修改文件头的方式隐藏控制台窗口 - 林德熙
使用 GitVersion 在编译或持续构建时自动使用语义版本号(Semantic Versioning) - 吕毅
Automatically increase the semantic version using GitVersion - 吕毅
Reading the Source Code of Microsoft.NET.Sdk, Writing the Creative Extension of Compiling - 吕毅
更多课程
Microsoft Tech Summit 2018 课程简述:利用 Windows 新特性开发出更好的手绘视频应用 - shaomeng
时间:2018 年 10 月 27 日 17:00-17:45
讲师:邵猛
代号:NUE204
原文地址:https://walterlv.com/post/dotnet-build-and-roslyn-course-in-tech-summit-2018.html
.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com
课程 预编译框架,开发高性能应用 - 微软技术暨生态大会 2018相关推荐
- 技术、产品、交流、思考 - 微软技术暨生态大会 2018
路 2018 年 10 月 23 日中午,我和林德熙踏上了前往上海的旅程.这是德熙第一次进行如此长途的旅行,之前几乎一直待在家里. 微软技术暨生态大会是从 10 月 25 日到 10 月 27 日,而 ...
- 新课程盘古人工智能框架开发专题发布,智华欢迎读者学习!
新课程盘古人工智能框架开发专题发布,智华欢迎读者学习! 盘古人工智能框架开发专题系列新课程https://edu.csdn.net/course/detail/31166 通过图文并茂.深入浅出的讲解 ...
- 【毕业设计】《数据库原理及应用技术》课程指导平台的开发
文章目录 目录 系统实现思路 源文件 目录 系统实现思路 互联网的出现改变了人类的生活方式,提高了人们的工作效率和生活质量,随着互联网的发展,网络教育应运而生,实现了人类教育的一次革命.如今网上教学已 ...
- 第七天课程预览和发布
文章目录 一.Eureka注册中心 1.1 Eureka介绍 1.2 高可用Eureka搭建 1.3 服务注册 1.3.1 将CMS注册到Eureka Server 1.3.2 将manage-cou ...
- 游戏服务器Mina框架开发
游戏服务器Mina框架开发 作者:老九-技术大黍 社交:知乎 公众号:老九学堂(新人有惊喜) 特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系笔者授权 前言 如果要使用Java语言来开发游戏 ...
- jQuery框架开发一个最简单的幻灯效果
在线演示 在这个课程中,我们将介绍如何使用jQuery来开发一个最简单的图片幻灯效果. 立刻观看互动课程:jQuery框架开发一个最简单的幻灯效果 阅读原文:jQuery框架开发一个最简单的幻灯效果
- 学成在线 第9天 讲义-课程预览 Eureka Feign Ribbon
1Eureka注册中心 1.1需求分析 在前后端分离架构中,服务层被拆分成了很多的微服务,微服务的信息如何管理?Spring Cloud中提供服务注册中心来管理微服务信息. 为什么 要用注册中心? 1 ...
- 学成在线 第9天 讲义-课程预览 Eureka Feign 五
3.3 课程预览技术方案 根据要求:课程详情页面采用静态化技术生成Html页面,课程预览的效果要与最终静态化的Html页面内容一致. 所以,课程预览功能也采用静态化技术生成Html页面,课程预览使用 ...
- 新起点!新征程!微软技术俱乐部(苏州)成立大会暨微软技术交流会
2019年1月19日,苏州微软将举办苏州史上最盛大的开发者聚会,微软技术俱乐部成立大会暨微软技术交流会. 超越苹果,登顶世界市值第一!云与AI两大技术支柱支撑起的微软帝国,正向万亿美元俱乐部挺进!微软 ...
最新文章
- 编译器架构Compiler Architecture(上)
- 虚拟私有云网络VPC
- 百度链接提交-主动推送Python版
- 实战部署MySQL用户认证的Postfix邮件系统(3)
- c4d打开没反应_掌握这3种C4D技巧,线框渲染效果图也就几秒的事
- 手把手带你学习如何在小程序、网页前端部署AI模型
- 8-Spring Boot消息服务
- 从技术角度谈一谈,我参与设计开发的手Q春节红包项目
- 45. PHP 过滤器(Filter)
- 启动3Dmax到初始化..界面卡住然后闪退解决办法
- Linux 下 ls -l 命令执行显示结果的每一列含义
- 四川大学计算机学院软件工程期末,四川大学软件工程期末复习ppt
- SQLserver的Always On 可用性组
- 一文读懂设计模式--适配器模式
- 移动硬盘USB经常无法安全弹出
- Spring SpringMVC SpringBoot SpringCloud概念及关系
- 6种数据分析实用方法,终于有人讲明白了
- 四、Kubernetes实战入门
- 拯救地球精英【逻辑题】
- 剪辑魔术——赞爆朋友圈的创意视频!
热门文章
- 【python】-- Django 中间件、缓存、信号
- 【spring boot】8.spring boot的日志框架logback使用
- 深入理解Three.js(WebGL)贴图(纹理映射)和UV映射
- WebApi的调用-3.Basic验证
- You third iOS app,这个APP要放到手机上面运行,才会成功,才会新建记录。
- 张萍萍 计科高职13-1 201303014010
- 2009从知到行知识管理培训公开课最后一期
- 我的邮局系统,欢迎大家注册!hotxf.com
- Dapr集成之GRPC 接口
- Dapr Meetup 3.22【周六】