VS-2012からVS-2015にアップグレードされました。私のすべてのプロジェクト(CSharpライブラリ)は、警告レベル4(最高レベル)でコンパイルされるように設定されています。バックVS-2012の私のプロジェクトの一つで、私はタイプの2つの警告Visual Studio 2015警告がトリガーされない
- CS0414 The private field is assigned but its value is never used(警告レベル3)
- CS0649 The private field is never assigned to and will always have its default valueを(警告レベル4)
私はこの警告を期待していこれらは内部リファクタリングの結果であり、別の第三者コンポーネントに切り替えるためにトリガされます。私にとっては、これらの警告は実際にToDo'sが世話をしなければならないことを示しているので重要です。
ただし、これらの警告はトリガされず、[エラーリスト]ビューには表示されません。
はい、実際のToDoのコメントはそこに現れますが、私は知っている場所については心配しませんが、将来のリファクタリングで終わる可能性のある場所は、 VSが警告を発しないために。
上記のMSDNのドキュメントとVSの設定可能な警告レベルからわかるように、私はVSまたはプロジェクト自体を構成する必要があります。
根本的な "Roslyn"コンパイラが意味解析に基づいてこれらの警告を検出できない(まだ)のですか?あるいは私は何か他のものを逃していますか
さらにいくつかの情報を提供するには、[編集]
。私は2012年と2015年の両方で再構築ソリューションを使用します。プロジェクトの再構築が不足しているため、公開されていない警告の理由にはなりません。
タイプ
- の第三の警告CS0618 Member is obsolete(警告レベル2)
は、VS-2012 VS-2015の両方で
を示している編集2
小さなコード例です(新しいプロジェクト - >クラスライブラリを作成するだけです)。興味深いのは、最初にプロジェクトを作成したときに、VS-2012とVS-2015の両方で警告が発生したことです。そのため、私の現在のケースを見て違いがどこにあるのかを確認しました。クラスをabstract
とすると、警告を発行しないVS-2015の結果が返されます。クラスが抽象クラスでない場合、VS-2015はVS-2012のように警告します。しかし、私の目では、フィールドが抽象であるというケースは、フィールドがプライベートであると宣言されているので、問題ではありません。
// When the class is being marked as abstract, VS-2015 will not issue any warning.
// When the class is not abstract the warnings are issued.
public abstract class Demonstrator
{
// This should trigger warning CS0169 Warning Level 2
private int _UnusedField;
// This should trigger warning CS0414 Warning Level 4
private int _AssignedButNotReadField;
public Demonstrator()
{
_AssignedButNotReadField = 1;
}
}
「Rebuild Solution」を試しましたか? –
@PhillipNgan:はい、再構築をトリガーしました;-) – Tobias
警告タブは有効になっていますか? (強調表示されている) – Mixxiphoid