本文整理我和 林德熙 学习的 dotnet 编译知识、Roslyn 源码分析知识,NuGet 知识。通过阅读本文可以从零散的碎片化博客中得到从零开始学习的轨迹。
发布于 2018-03-18 12:45 更新于 2018-06-02 01:26
非常流行的跨平台代码编辑器,提供全面的编辑和调试支持、可扩展性模型以及与现有工具的轻量级集成。
.NET Core 是基于.NET Framework 为基础,借鉴了其优秀的思想与强大的功能,经过重新设计与构建,实现了.NET Framework 中的部分功能(不包含Windows UI部分),比如JIT、垃圾收集器(GC)、CLR、BCL等。
最近做一个功能想要动态执行C#脚本,就是预先写好代码片段,在程序运行时去执行代码段,比如像这样(以下代码为伪代码):
发布于 2018-05-25 13:24 更新于 2018-06-02 01:26
上一篇中.Net 编译器平台 --- Roslyn,介绍了Roslyn的各项功能,包括公开API,使用语法,使用语义,使用工作区等功能。
本文以 dotnetCampus.Ipc 项目为例,来说明如何为一个现成的 .NET 类库添加自动生成代码的功能。这是一个在本机内进行进程间通信的库,在你拥有一个 IPC 接口和对应的实现之后,本库还会自动帮你生成通过 IPC 代理访问的代码。由于项目加了 Roslyn 的 SourceGenerator 功能,所以当你安装了 dotnetCampus.Ipc NuGet 包 后,这些代码将自动生成,省去了手工编写的费神。
在MVC以外的场景中,我们往往需要完成一些模板引擎生成代码或页面的工作;在以前我们一般常用的有Razor、NVeocity、VTemplate。虽然所有的模板系统都具有一些共同特征,但 Razor却和我们前面讨论的二种视图引擎截然不同。不同于其它视图引擎,Razor在使用XML代 码方面没有走得那么极端。它也不完全类似于ASPX,因为它把那些比较笨重的占位符替换成@符号接表达式或者普通的控制块。因为不需要特殊的结束标记,所 以Razor最终的代码很简练。
我们在代码中会写 #if DEBUG 或者 [Conditional("DEBUG")] 来使用已经定义好的条件编译符号。而定义条件编译符号可以在代码中使用 #define WALTERLV 来实现,也可以通过在项目属性中设置条件编译符号(Conditional Compilation Symbols)来实现。
本文仅仅只是用来在2020苏州开发者大会上的素材,开发者大会成功完成,本文也可以公开
在 C# 代码里面,大部分的代码都是在开始定义了 using 引用命名空间,本文将告诉大家如何使用 Roslyn 分析获取类文件里面引用的命名空间
Compilify是一款以服务形式出现的在线编译器,其创始人是Justin Rusbatch,它运行在Roslyn CTP[1]之上。从最近开始,它已得到来自.NET社区的大量关注。我们与Justin取得了联系,并向他请教了几个问题。 InfoQ:请向我们的读者做下自我介绍吧? Justin: 我叫Justin,是名自学开发者,现在就职于一家基于.NET进行网络开发的小型公司,公司位于宾夕法尼亚州的中部。当我还是计算机操作员时,我利用值夜班时为大型机安装磁带的间隙自学了C#。我使用ASP.NET工作了
.NET Compiler Platform Roslyn 是属于 .Net 基金会的一个项目,本文将简要介绍该项目相关的信息。
开源项目位置:https://github.com/whuanle/CZGL.CodeAnalysis
新闻《微软宣布成立.NET基金会全面支持开源项目 包括C#编译器Roslyn》,看到大家对微软的开放都很兴奋。在此之前在.NET社区也有了大量的开源项目,所列的24个项目也是早就开源,这次的重大意义在于成立了一个实体---.NET基金会,它将促进对.NET 的开放式创新,终于可以让大家认识到了.NET其实是很开放的,也是我的博客想向大家表达的,这次的微软Build大会应该是个里程碑。 .NET基金会旨在“统筹管理所有开放源代码的.NET库“。这和Apache软件基金会和Eclipse基金会的本质基本相同,都
Roslyn 是微软公司开源的 .NET 编译器。编译器支持 C# 和 Visual Basic 代码编译,并提供丰富的代码分析 API。 GITHUB地址:https://github.com/dotnet/roslyn.git
原文地址:https://github.com/thangchung/awesome-dotnet-core
首先创建一个项目,项目使用.net Framework 4.6.2 ,控制台项目。然后需要安装一些需要的库
Roslyn 是微软为 C# 设计的一套分析器,它具有很强的扩展性。以至于我们只需要编写很少量的代码便能够分析我们的源代码。之前我写过一些使用 Roslyn 进行语法分析的文章。使用语法分析,可以轻松为代码编写提供各种错误报告以及修改代码(见这里)。而使用语义分析,你可以像在运行时使用反射一样,在编译时访问源代码中的各种类型、属性、方法等,特别适合用来分析引用、生成代码等。当然,实际项目里面将两者结合起来可以做到更多的效果。
本文内容已加入 2019 年 4 月 13 日的广州 .NET 俱乐部第 2 届线下沙龙。
在 sdk style 的项目格式支持使用多框架开发,此时需要在代码里面通过宏判断,在编译的时候执行不同的代码。本文告诉大家在框架里面对应的预定义的条件编译符有哪些
根据微软的介绍,与我之前的一些总结,可以看到 ASP.NET 以及 .NET 平台会有下面几个变化: 代码使用 Apache 协议开源,并且托管于 Github 上。 新的 C# 编译器 Roslyn。 一个新的跨平台的 CLR(对应 Java 平台的 JVM)。 新的项目组织与构建工具KVM。 基础库 corefx。 这些概念都有点让人觉得云深雾绕,仔细研究就会发现,其实 ASP.NET 借鉴了大量 node.js 与 Ruby 社区的概念与架构。对应如下: KVM 对应 Ruby 社区的 RVM,与 n
它们直接与 C# 编译器集成(Roslyn)并在编译时运行,分析源代码并根据分析结果生成附加代码。
.NET 是一个由 Microsoft 设计和支持的软件开发框架和生态系统,可实现轻便的桌面和 Web 应用程序工程。它是一个流行的免费平台,目前用于许多不同类型的应用程序,因为它为大多数软件开发阶段提供了编程环境。.NET 最适合寻求广泛功能的企业,例如基于 Web 的服务、桌面软件和云基础架构支持。
https://www.cnblogs.com/artech/p/17586781.html
我在微软的团队快被微软 C# 里面的各种 IDisposable 对象给折腾疯了……
Hello,大家好,又是好久不见,最近太忙了(借口)。看了下日志,有 2 个月没写文章了。为了证明公众号还活着,今天必须更新一下了。
0. Cake是什么? Cake是C# Make的缩写,是一个基于C# DSL的自动化构建系统。它可以用来编译代码,复制文件以及文件夹,运行单元测试,压缩文件以及构建Nuget包等等。 熟悉大名鼎鼎的Make的小伙伴,应该已经知道Cake大致是个什么样的工具了,Cake具有以下几个特点: 方便编写:使用基于C#的DSL,非常易于编写自动化的脚本。 跨平台: 基于Roslyn和Mono来编译我们写的自动化脚本,使得它可以运行在windows,linux,mac上。 可靠的:可以建立在自己的机器上,也可以建立在
结合使用这两项操作能充分发挥源生成器的强大功能。 可以使用编译器在编译时构建的丰富元数据检查用户代码。 然后,生成器将 C# 代码发送回基于已分析数据的同一编译。 如果你熟悉 Roslyn 分析器,可以将源生成器视为可发出 C# 源代码的分析器。 源生成器作为编译阶段运行,如下所示:
本文告诉大家如何在使用 IIncrementalGenerator 进行增量的 Source Generator 生成代码时,如何从语法分析过程,将获取的语法 Token 转换到语义分析上,比如获取类型完全限定名。一个使用的例子是在拿到一个 Token 表示某个类型时,本文将演示通过语义分析获取到拿到的 Token 的 Type 类型的 FullName 带命名空间的完全限定名
https://www.cnblogs.com/savorboard/p/cap-7-0.html)
微软高级软件工程师辛石说,Infer#并不是唯一可用于.NET的静态分析器。但是,Infer# 为 .NET平台带来了独特的功能。Infer# 与众不同的是它专注于跨函数分析,这在其他分析器中找不到,而增量分析则找不到。
大家好,今天给大家分享.NET 蓝图之下的Mono和.NET Core 话题,微软在Build 2019 大会上给.NET 做了一个五年规划,所以分享的主题就是《Mono和.NET Core 比翼双飞》,将在完成这个五年规划的时候合体。
如果你使用的是旧版本的 Visual Studio,那么默认的代码分析规则集是“最小建议规则集”。基于这个,写出来的代码其实只能说是能跑通过而已。随着 Roslyn 的发布,带来了越来越多更强大的代码分析器,可以为编写高质量的代码带来更多的帮助。
Succinctly .NET 本地化教程 零、简介 一、从本地化开始 二、日期和时间 三、周数 四、时区 五、数字 六、货币 七、文本 八、附录 Succinctly Linux 教程 一、简介 二、Linux 目录结构 三、命令行界面 四、目录 五、查看文件和目录详情 六、权限 七、查看和编辑文件 八、删除、移动和重命名文件和目录 九、查找、排序和比较文件和目录 十、输入输出重定向 十一、附加命令行概念 十二、进程和作业 十三、切换用户 十四、安装软件 Succinctly Matlab 教程 零
该项目是一个基于C#开发、开源的文件管理器,适用于Windows,界面UI美观、方便轻松浏览文件。此外,支持创建和提取压缩文件,使文件压缩和解压缩变得轻而易举。
前文介绍了.NET Core 在整个.NET 平台所处的地位,以及与.NET Framework的关系(原文链接),本文将详细介绍.NET Core 框架的构成和各模块主要功能,以及如何实现跨平台。
上图描述了 .NET Core的系统构成,最上层是应用层,是开发基于UI应用的框架集,包括了ASP.NET Core(用于创建web app),和 UWP(用于创建Windows10 app)。
博客已提更一年多了,这段时间里,发生了很多事情,也让我对C#更加依恋,所以我决定重新更新博客,以自己的实践经验梳理C#的技术脉络,也欢迎大家手下留情,耐心指点,让我们共同进步吧! C# 简介 📷 C#(音同see sharp)是一种通用的多范式编程语言。C# 包括静态类型、强类型、词法作用域、命令式、声明式、函数式、泛型、面向对象(基于类)和面向组件的编程学科。 C#编程语言由微软的Anders Hejlsberg于2000年设计,后来于2002年被Ecma(ECMA-334)和2003年批准为ISO/IE
发布于 2018-09-06 13:58 更新于 2018-09-06 15:04
本文告诉大家如何在使用 IIncrementalGenerator 进行增量的 Source Generator 生成代码时,如何判断两个程序集之间是否存在 InternalsVisibleTo 关系
12月23日,由开源中国联合中国电子技术标准化研究院主办的2017源创会年终盛典在北京万豪酒店顺利举行。在本次大会上,链家集团技术副总裁、PHP 开发组核心成员鸟哥发表了以 “ PHP Next: JIT ”为主题的演讲,分享了 PHP 的下一个性能提升的主要举措:JIT 的进展, 以及下一个大版本的 PHP 可能的特性。 具体内容请看: https://mp.weixin.qq.com/s/bYZLJgKtdRwSX40Xixc5Yw ,这里PHP Next 目前正在开发当中,由 Zend 的 Dmit
本文整理 dotnet 打包 CBB 组件为 NuGet 包时可以使用的配置的各个属性
我有一个强大的功能,这个功能就是在 Linux 下使用 GDI 转换 EMF 格式图片为 png 图片,但是有一些有趣的图片会让转换的进程炸掉。因此我就想让转换服务放在独立的进程,通过进程间调用,也就是命令行调用传入参数的方式,让另一个进程转换图片。而此时就会遇到一个问题,如何让这个进程也被构建,然后输出到输出路径
最新的Mono 4.4已经支持运行asp.net mvc5项目,有的同学听了这句话就兴高采烈的拿起Visual Studio 2015创建了一个mvc 5的项目,然后部署到Mono上,浏览下发现一堆错误出现,心中一万只草泥马奔腾而来,这也叫支持吗,这个问题是Visual Studio造成的,不相信的话可以使用Xamarin.Studio创建的asp.net项目,部署过程非常顺利,没有遇到什么问题;本文就是为你解开这个结,如何Visual Studio 2015搞定ASP.NET MVC 5项目的跨平台开发。
领取专属 10元无门槛券
手把手带您无忧上云