0

アクティブなプロジェクトをたどってすべてのメソッドにコードを挿入する小さな Visual Studio アドインがあります。私のターゲット プロジェクトには Web サービス参照があり、気にしない自動生成された参照ファイルの束が作成されました。projectitem が autogen ファイルかどうかを検出する方法はありますか?

プロジェクト ファイルにはタグがありますが、ProjectItem.Properties にはありません。ありがとう

4

1 に答える 1

0

これを100%確実に行う方法はありますか?私はそうは思わない。ファイルが自動生成されているかどうかを知る唯一の方法は、その内容またはファイル名によるものです。

多くの場合、(私が知っている) C# の新しいバージョンで生成されたコード ファイルには、".g." があります。彼らの名前の中で。これは絶対に書かれていないか、保証されているわけではありません (Windows フォームやその他の古いジェネレーターは ".Designer." を使用していると思います) が、目安として使用できます。

自動生成されたさまざまなコードに目を通すと、さまざまな方法でマークを付けることができることがわかります。普遍的な特定の方法はありません。たとえば、WPF コードビハインド ファイル (非表示の InitializeComponent() メソッドが存在する) 内の自動生成されたワイヤアップ コードには、System.CodeDom.Compiler.GeneratedCodeAttributeでマークされた部分クラス定義が含まれており、メソッドはすべてSystem.Diagnostics.DebuggerNonUserCodeAttributeでマークされています。 .

最初の属性はクラスに存在するため、EnvDTE メソッドを介してコードを検査すると表示される場合があります。ファイルを未加工で読み取り、その属性を探す必要がある場合があります。

これでも十分な情報ではありません。コード ジェネレーターが異なればコードのマークも異なるからです。タイプ セーフな DataSet と 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>
//------------------------------------------------------------------------------

今何?

自動生成されたコードがマークされるさまざまな方法をすべて調査し、それらすべてを処理しない限り、これらのファイルをスキップすることを保証できる方法はありません (何かが欠けている場合を除きます!)。努力する価値があるかどうかを自問する必要があります。

于 2012-06-20T13:17:24.890 に答える