【发布时间】:2021-01-08 16:29:22
【问题描述】:
所以,我正在编写一个代码生成器工具,我想从用户必须指定的现有 csproj 中获取默认命名空间。本质上,我希望能够从路径加载 csproj 并从中获取一些配置。
我还希望能够从解决方案中获取所有现有项目,我将从其中使用路径中的解决方案文件。
我已经研究过代码分析器并相信这是要走的路,但到目前为止我还没有找到一个我想要实现的示例。
我不希望支持旧格式 csproj,只支持 VS2017 附带的 Microsoft.NET.Sdk 格式。
【问题讨论】:
-
你的工具可以写成Source generator吗?那你就不用担心加载csproj文件等了
-
它是一个类似于 ef 核心逆向工程支架的工具,但用于 repoDb 并且对 EF 的依赖性为零。我正在查询 information_schema、生成基本实体和其他一些配置代码。但我不希望我的用户必须为该工具指定命名空间。我将研究 Source 生成器。
-
我的想法是让它能够作为接收某些参数的 CLI 运行,例如 db 引擎、连接字符串以及文件将在哪个 csproj 中结束。
-
是的,我认为源生成器不适合我正在构建的那种工具。
-
这很好,但值得提出这个问题!将 sln / csproj 加载到
MSBuildWorkspace中,并使用 Roslyn 分析它可能是最简单的方法
标签: c# visual-studio msbuild roslyn-code-analysis