微软技术暨生态大会(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 的预编译框架旨在解决这些性能问题。

本次讲题能学到什么?

  1. 体验预编译框架的强大性能

  2. 理解 dotnet build 的编译过程

  3. 使用 Roslyn 分析和修改项目源代码

  4. 如何开发自己的预编译框架

  5. 制作源代码引用 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相关推荐

  1. 技术、产品、交流、思考 - 微软技术暨生态大会 2018

    路 2018 年 10 月 23 日中午,我和林德熙踏上了前往上海的旅程.这是德熙第一次进行如此长途的旅行,之前几乎一直待在家里. 微软技术暨生态大会是从 10 月 25 日到 10 月 27 日,而 ...

  2. 新课程盘古人工智能框架开发专题发布,智华欢迎读者学习!

    新课程盘古人工智能框架开发专题发布,智华欢迎读者学习! 盘古人工智能框架开发专题系列新课程https://edu.csdn.net/course/detail/31166 通过图文并茂.深入浅出的讲解 ...

  3. 【毕业设计】《数据库原理及应用技术》课程指导平台的开发

    文章目录 目录 系统实现思路 源文件 目录 系统实现思路 互联网的出现改变了人类的生活方式,提高了人们的工作效率和生活质量,随着互联网的发展,网络教育应运而生,实现了人类教育的一次革命.如今网上教学已 ...

  4. 第七天课程预览和发布

    文章目录 一.Eureka注册中心 1.1 Eureka介绍 1.2 高可用Eureka搭建 1.3 服务注册 1.3.1 将CMS注册到Eureka Server 1.3.2 将manage-cou ...

  5. 游戏服务器Mina框架开发

    游戏服务器Mina框架开发 作者:老九-技术大黍 社交:知乎 公众号:老九学堂(新人有惊喜) 特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系笔者授权 前言 如果要使用Java语言来开发游戏 ...

  6. jQuery框架开发一个最简单的幻灯效果

    在线演示 在这个课程中,我们将介绍如何使用jQuery来开发一个最简单的图片幻灯效果. 立刻观看互动课程:jQuery框架开发一个最简单的幻灯效果 阅读原文:jQuery框架开发一个最简单的幻灯效果

  7. 学成在线 第9天 讲义-课程预览 Eureka Feign Ribbon

    1Eureka注册中心 1.1需求分析 在前后端分离架构中,服务层被拆分成了很多的微服务,微服务的信息如何管理?Spring Cloud中提供服务注册中心来管理微服务信息. 为什么 要用注册中心? 1 ...

  8. 学成在线 第9天 讲义-课程预览 Eureka Feign 五

    3.3 课程预览技术方案  根据要求:课程详情页面采用静态化技术生成Html页面,课程预览的效果要与最终静态化的Html页面内容一致. 所以,课程预览功能也采用静态化技术生成Html页面,课程预览使用 ...

  9. 新起点!新征程!微软技术俱乐部(苏州)成立大会暨微软技术交流会

    2019年1月19日,苏州微软将举办苏州史上最盛大的开发者聚会,微软技术俱乐部成立大会暨微软技术交流会. 超越苹果,登顶世界市值第一!云与AI两大技术支柱支撑起的微软帝国,正向万亿美元俱乐部挺进!微软 ...

最新文章

  1. 编译器架构Compiler Architecture(上)
  2. 虚拟私有云网络VPC
  3. 百度链接提交-主动推送Python版
  4. 实战部署MySQL用户认证的Postfix邮件系统(3)
  5. c4d打开没反应_掌握这3种C4D技巧,线框渲染效果图也就几秒的事
  6. 手把手带你学习如何在小程序、网页前端部署AI模型
  7. 8-Spring Boot消息服务
  8. 从技术角度谈一谈,我参与设计开发的手Q春节红包项目
  9. 45. PHP 过滤器(Filter)
  10. 启动3Dmax到初始化..界面卡住然后闪退解决办法
  11. Linux 下 ls -l 命令执行显示结果的每一列含义
  12. 四川大学计算机学院软件工程期末,四川大学软件工程期末复习ppt
  13. SQLserver的Always On 可用性组
  14. 一文读懂设计模式--适配器模式
  15. 移动硬盘USB经常无法安全弹出
  16. Spring SpringMVC SpringBoot SpringCloud概念及关系
  17. 6种数据分析实用方法,终于有人讲明白了
  18. 四、Kubernetes实战入门
  19. 拯救地球精英【逻辑题】
  20. 剪辑魔术——赞爆朋友圈的创意视频!

热门文章

  1. 【python】-- Django 中间件、缓存、信号
  2. 【spring boot】8.spring boot的日志框架logback使用
  3. 深入理解Three.js(WebGL)贴图(纹理映射)和UV映射
  4. WebApi的调用-3.Basic验证
  5. You third iOS app,这个APP要放到手机上面运行,才会成功,才会新建记录。
  6. 张萍萍 计科高职13-1 201303014010
  7. 2009从知到行知识管理培训公开课最后一期
  8. 我的邮局系统,欢迎大家注册!hotxf.com
  9. Dapr集成之GRPC 接口
  10. Dapr Meetup 3.22【周六】