出荷アセンブリFxCopのでは.NETは[SuppressMessage]属性
質問
私は疑問に思います
リリースモードでCODE_ANALYSISを含め、プロジェクトファイル内の別々のconfigsを作成して、最終ビルドでそれをヤンクすることは私には回避のオーバーヘッドのようなものだ。
何は1つが、これらは最終組み立てのままにしたくない場合は、最高のstratergyことが、まだコードの中でそれらを使用したいと思いますか? そして、FxCopのプロジェクトファイルに格納のいずれかの長所/短所がありますか?
[私はVS2008プロ+ FxCopの1.36から来ている、というVS2008 Team Systemのより]
解決
、物事の壮大なスキームでは、私はそれが本当に重要とは思いません。この属性(有効メタデータ)であるので、コードのパフォーマンスに影響を与えません。言われていることを、属性内の情報は、リフレクターのようなdisassemberを使用して誰にでも利用可能であることを覚えてます。
FxCopのプロジェクトファイルに格納の問題点は、その後、全員が同じプロジェクトファイルを使用して、プロジェクトファイルは常に(あなたがそれをチェックしなければならないことを意味しており、ソース管理にチェックインされますプロジェクトで走行することを保証しなければならないということですあなたはFxCopのを実行するたびに)。
アウト あなたはSuppressMessageが本番コードの属性たくない場合は、あなただけが反対FxCopのを実行しているビルドにCODE_ANALYSISのシンボルを定義する必要があります。これはあなたのデバッグ構成で、それのいずれかを定義するか、追加の設定を追加することを意味します。属性のみシンボルが定義されているコードにコンパイルされます。
自動化/ナイトリービルドする観点から、あなたは、シンボルが定義されているコンフィギュレーションを使用して構築することができ、その後、シンボルなしの製品リリースを構築したり、2のビルドを行う - あなたの違反を取得するためにFxCopのを実行して、定義されたシンボルと1、およびその後、シンボルのない別のビルド定義します。
他のヒント
SuppressMessage属性は、あなたのコードに追加されます。あなたはReflector.exe内の属性の定義を見ることでこれを確認することができます。それは生産のコードには影響しませんので、デフォルトでは、これはリリースで定義されていません。
一般的に、私はDEBUGでFxCopのを実行CODE_ANALYSISが定義されている私のアセンブリのビルド。
私たちは、生産コードに散らばっトンを持っている、と我々は特に気にしません。これは、PERFをもたらし、そしてクラスにいくつかのcrufty見ている属性を持つことは、多くの場合、すべての可能性であれば、それを削除するためにモチベーションを与えません。