[VS2010] (続) オプション 「生成されたコードから結果を表示しない」 の挙動不審
Visual Studio 2008 では、 コード分析のオプション 「生成されたコードから結果を表示しない」 にチェックを入れても、 フォームやテンプレートでは、 コード分析のエラーや警告は抑制されません。 これは Visual Studio の不具合ではなく、 MSDN の翻訳ミスであることを以前に書きました。 → 「[VS2008] オプション 「生成されたコードから結果を表示しない」 の挙動不審」
Visual Studio 2010 では、 どうなったでしょうか?
MSDN フォーラム で翻訳を修正しておきますよ~、 と回答していただいた通り、 MSDN のドキュメントは訂正されています。
方法: マネージ コード プロジェクトのコード分析を構成する
Visual Studio 2010
メモ
コード分析のエラーおよび警告がフォームやテンプレートで表示される場合、このオプションを使用しても、生成されたコードからこのエラーおよび警告の出力は抑制されません。 フォームまたはテンプレートのソース コードは表示することも保持することもできます。
※ あ、 「保持する」 は maintain の誤訳だけど、 分かるよね。そう思って、フォーラムで突っ込まなかった。まぁ、 「メンテする」 って日本語になってるし f(^^;
…これで終わりかというと。 WPF では Visual Studio の挙動が変わっていました。
Visual Studio 2010 で WPF のプロジェクトを作ると、 自動生成された MainWindow.g.cs には GeneratedCode 属性が付くようになりました。
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector {
これにより、 WPF 4 のフォーム (System.Windows.Window を継承したクラス) では、 「生成されたコードから結果を表示しない」 オプションを使うと、 エラーと警告の出力が抑制されることになります。
※ Connect で 「WPF:コード分析で余計なソースファイルが分析対象となる」 (2009/09/02) というレポートが上がっており、 それに対応した結果のようです。
またしても、 ドキュメントと実際がズレてしまいました。
しかしそれよりも、 自動生成されたコードのメソッド単位に属性を付けてくれれば良かったのですが、 クラスに付けてくれたのがマズいです。 これでは WPF 4 のフォーム内にゴリゴリ書かれてしまったコードが、 分析の対象にならないと思われます。
なお、 Visual Studio 2010 でも、 WPF 3.5 を選ぶと、 従来通り GeneratedCode 属性は付かないようです。 WinForm も同様に、 付きません。
| 固定リンク
「プログラミング」カテゴリの記事
- 【.NET / Win8.1 ストアアプリ】 HttpClient で TLS 1.1 / 1.2 に対応するには(2018.06.17)
- 【VS2017 15.7pv2】 XAML のランタイム ツールに 「ヒートマップ」 が増えた(2018.03.28)
- 【.NET Core】 プロジェクトを作ると 「project.assets.json が見つかりません」 エラー(2018.02.10)
- 【#UWP】 ビットマップの表示色を変える (Win2D.uwp 経由で Direct2D を使う)(2017.08.23)
- 【#UWP】 CompactOverlay モード: Picture in Picture というか、「最前面に表示」するウィンドウを作る(2017.08.16)
「* プログラミング ( WPF )」カテゴリの記事
- 【VS2017 15.7pv2】 XAML のランタイム ツールに 「ヒートマップ」 が増えた(2018.03.28)
- [VS2010] (続) オプション 「生成されたコードから結果を表示しない」 の挙動不審(2011.08.24)
- う~む… .NET Framework 4 になっても、 IE を操作するのはめんどくさいままなのか!(2010.12.04)
- MSDN マガジン、読んでますか!?(2010.05.27)
- [WPF] 盾アイコン付きのボタンを作る (続)(2010.02.20)
この記事へのコメントは終了しました。
コメント