我有一个小的Visual studio外接程序,它遍历活动项目并将代码插入到每个方法中。我的目标项目有web服务引用,它创建了一堆我并不关心的自动生成的引用文件。有没有办法检测一个项目是否是autogen文件?
项目文件下有标记,但ProjectItem.Properties没有。谢谢
发布于 2012-06-20 21:17:25
有没有办法100%地做到这一点?我不这样认为。我唯一能够判断一个文件是否是自动生成的方法就是通过它的内容或者文件名。
通常,(据我所知)较新版本的C#中生成的代码文件都有一个“.g”。在他们的名字里。这不是一成不变的,也不是有保证的(我认为windows窗体和其他较旧的生成器使用".Designer."),但它可以用作指示。
如果你查看不同的自动生成的代码,你会发现有许多不同的方法可以标记它。没有通用的具体方法。例如,WPF代码隐藏文件(隐藏的InitializeComponent()方法驻留在那里)中自动生成的布线代码包含用System.CodeDom.Compiler.GeneratedCodeAttribute标记的分部类定义,并且所有方法都用System.Diagnostics.DebuggerNonUserCodeAttribute标记。
第一个属性驻留在类中,因此在通过EnvDTE方法检查代码时可能会显示出来。您可能不得不在raw中读取文件并查找该属性。
即使这样也是不够的,因为不同的代码生成器会以不同的方式标记它们的代码。类型安全DataSets和EF生成的代码在文件顶部用注释标记其生成的代码
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.551
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------现在怎么办?
除非您探索标记自动生成的代码的所有不同方式,并处理它们,否则没有任何方法(除非我遗漏了什么!)你可以保证跳过这些文件。你必须问问你自己,这是否值得你付出努力。
https://stackoverflow.com/questions/11110628
复制相似问题