创建源代码生成器的样板指南 - 第 4 部分





0/5 (0投票)
一个包含 6 篇文章的系列,为您提供创建源代码生成器的样板指南。
目录
- 第 1 部分 - 介绍 / 准备创建源代码生成器
- 第 2 部分 - 创建源代码生成器的基本基础设施
- 第 3 部分 - 实现源代码生成器
- 第 4 部分 - 调试源代码生成器
- 第 5 部分 - 将源代码生成器打包成 NuGet 包
- 第 6 部分 - 如何使用 NuGet 源代码生成器
调试源代码生成器
我已经看到了几种调试方法,我认为我将展示的方法是最简单、最直接的方法。
安装
- 打开源代码生成器项目文件,并将以下内容添加到
PropertyGroup
中<IsRoslynComponent>true</IsRoslynComponent>
- 关闭 Visual Studio。
- 重新打开解决方案。
- 打开源代码生成器项目的属性
- 单击或向下滚动到“调试”部分。
- 单击“打开调试启动配置文件 UI”。
- 删除现有的配置文件。
- 基于“Rosyln Component”添加一个新的配置文件。
- 在下拉列表中,选择您的测试应用程序。
- 关闭所有窗口。
这会将配置文件添加到 Properties -> launchSettings.json 文件中。
调试
- 将启动项目更改为源代码生成器。
- 打开 BaseGenerator.cs 的源代码,并在
Initialize
方法的开头设置一个断点。 - 按 F5 或您通常使用的方式启动调试器。
此时,您应该会命中该断点。
从这一点继续是正常的。 您可以访问监视窗口并设置条件断点。
检查 Microsoft 类
可以检查两种类型的类
- 语法
- 语义
语法就是这样,它是解析器生成的用于确定您的源代码是否有效的信息。 更多信息可以在这里找到:使用语法。 如果您想看看它是什么样的,在 Visual Studio 中,选择 view -> Other Windows -> Syntax Visualizer。 然后,您可以单击任何类定义,然后开始探索。
语义提供了关于实际类本身的附加信息,其中可能包括属性、接口、基类等。 更多信息可以在这里找到:使用语义。
这两部分是生成的关键。 它们是很大的话题,不可能在这个入门教程中描述。
我能说的最好的是,在调试时查看您当前正在处理的对象。 您将能够通过父属性向上导航,或通过您感兴趣的子级向下导航。
最后的智慧之言
我通过在 BaseGenerator
类中提供 GetClassInformation()
方法来帮助您获取一些信息。
源代码生成器对我来说仍然是新的,因此我提供的内容对于您或我可能需要的每件事来说远未完成。
对于我在创建更多生成器时来说,它应该是一个起点。 我计划在将来根据需要继续改进、重构和添加辅助方法。
历史
- 2024年1月18日:初始版本