【问题标题】:Roslyn - how detect code files that are auto-generated?Roslyn - 如何检测自动生成的代码文件?
【发布时间】:2020-07-24 12:22:00
【问题描述】:

是否可以检测到Microsoft.CodeAnalysis.Document 是否由工具自动生成?

例如:

foreach(var document in project.Documents)
{
    if (!document.IsGeneratedCode())
    {
        // TODO
    }

}

查看source code on GitHub,我发现扩展方法IsGeneratedCodeIsGeneratedCodeAsync 存在,但仅作为内部 助手。实现调用同样是内部IGeneratedCodeRecognitionService语言服务。

有没有办法在外部控制台应用程序中使用类似的功能?

【问题讨论】:

    标签: roslyn roslyn-code-analysis


    【解决方案1】:

    不理想,但您可以复制internal logic。基本上,在以下情况下,代码被认为是“生成的”:

    • 文件以自动生成的注释开头// <autogenerated />
    • 文件名以TemporaryGeneratedFile_开头
    • 文件名在扩展名之前以.designer.generated.g.g.i 结尾

    【讨论】:

    • 我最终做到了,但复制的问题是,如果 Roslyn 团队更新/改进他们的代码,我最终可能会运行不同的实现。理想情况下,此功能应该在某处公开。
    猜你喜欢
    • 2019-08-31
    • 2018-07-03
    • 2018-12-07
    • 2014-05-17
    • 2015-03-06
    • 2012-11-27
    • 2011-03-25
    • 2020-12-22
    • 1970-01-01
    相关资源
    最近更新 更多