如何用Roslyn分析解决方案并向其他项目干系人提供元数据
项目目标
本工具旨在为项目干系人提供元数据。项目包含各类权限相关接口,需要向没有Visual Studio、不会查看代码的干系人展示接口实现细节。通过抓取应用中所有指定接口的实现,并以自定义格式呈现,帮助干系人和业务分析师理解已实现的功能,辅助他们通过C#代码了解应用逻辑,缩小对复杂应用的预期与实际行为之间的认知差距。
使用方式
该控制台应用通过命令行运行,示例如下:
RoslynScraper -s "c:\users\anyone\reps\MySolution.sln" -i "IPermissions, IWhatever, ISomethingElse"
参数说明:
-s:指定要分析的Visual Studio解决方案文件(.sln)的路径-i:指定需要检查的接口名称,多个接口用逗号分隔
input.cs
namespace RoslynScraper.Models; public class Input { /// <summary> /// 要检查的VS .sln文件路径 /// </summary> public string SolutionFile { get; set; } = default!; public string OutputFile { get; set; } = default!; /// <summary> /// 需要检查哪些接口? /// </summary> public IEnumerable<string> InspectInterfaces { get; set; } = Enumerable.Empty<string>(); }
output.cs
namespace RoslynScraper.Models; public class Output { public IEnumerable<Item> Items { get; set; } = Enumerable.Empty<Item>(); public class Item { public string InterfaceName { get; set; } = string.Empty; /// <summary> /// 类所属的命名空间 /// </summary> public string Namespace { get; set; } = default!; /// <summary> /// 实现接口的类名称 /// </summary> public string ClassName { get; set; } = default!; /// <summary> /// 成员名称(方法、属性、事件等) /// </summary> public string MemberName { get; set; } = default!; /// <summary> /// C#方法或属性的代码体 /// </summary> public string Body { get; set; } = default!; /// <summary> /// 代码体在源文件中的具体位置 /// </summary> public SourceLocation? Location { get; set; } } }
内容的提问来源于stack exchange,提问作者aaronksalmon
相关产品推荐
相关产品推荐

