【发布时间】:2021-10-26 06:03:46
【问题描述】:
有没有办法在编译时删除未使用的 using 语句?它可以是任何 cli 工具或 dotnet 工具。
原因如下:
我们有代码生成器,这个代码生成器会生成很多using,但在某些情况下需要使用,而有些则不需要。但是在生成时没有办法决定在以后的代码中使用哪个 using 和哪个不使用。
因此,如果我们有工具可以删除未使用的 using 语句,那就太好了。编辑器命令当然不起作用,因为当我们重建项目时,生成的文件将重新生成。因此,mechasnim 必须在生成器完成后在编译时运行。
我检查了dotnet-format 工具,但没有这个选项。
编辑 1: 输入文件有一个简单的示例,它是生成器的输入。
import valuedto.dml
import valuemodel.dml
service: SampleService
{
controller: ValueController
{
public:
{
PublicValueDTO GetValue( string id );
}
public:
{
PrivateValueModel GetValuePrivate( string id );
}
}
}
如您所见,服务文件导入了两个不同的模型文件。一个 dml 文件包含公共 dto-s,另一个包含私有模型。
生成器以此为输入,生成大量代码:
- 客户端界面
- http 客户端实现
- 控制器实现
- 客户端 dll
- 等等……
其中一个生成器只收集公共函数,并为第 3 方客户端创建一个程序集,以使用公共接口。但在这种情况下,很难决定必须使用哪些进口。在现实世界中,有mor import,import是reported,其他的import是递归的。
如果公共接口包含来自私有模型的using-s,则生成的代码不可编译
请将主要问题集中在您的回答中,而不是实际的实现中。因为它只是一个非常小的样本,而不是真正的样本(缺少版本、权限、路由、动词、多部分等......)
【问题讨论】:
标签: c# .net .net-core msbuild msbuild-task