Visual Studio アセンブリ参照があることを確認してください

適当なサイトからコードをコピペしてきたときに、「型または名前空間名 'xxxx' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。」というエラーが出るときがあります。
クラス名(または名前空間)は合っていても、属する名前空間が記述されていないとこうなります。
記述すれば直せるのですが、そのためにどの名前空間を記述すればいいのかがわからないときがあります。

それを探すために有効なのがVisualStudioのオブジェクトブラウザーです。
VS2013Communityの場合「表示>オブジェクトブラウザー」(ctrl+Alt+J)で開きます。

Visual Studio アセンブリ参照があることを確認してください

Visual Studio アセンブリ参照があることを確認してください

実際に使ってみましょう。
以下のコードを見てください。

using System;

    public class PiyoPiyo
    {
        public void Hoge()
        {
            var ra = new RequiredAttribute();
            var cva = new CustomValidationAttribute(typeof(int), "v");
        }
    }

これだと参照が不足しているため、RequiredAttributeクラスとCustomValidationAttributeクラスでエラーが出ます。
直そうとしても、これらがどの名前空間に属するのかわからない状態です。
そこで、CustomValidationで検索してみると、System.ComponentModel.DataAnnotations.CustomValidationAttributeクラスがヒットします。

Visual Studio アセンブリ参照があることを確認してください

今度はRequiredで検索してみると、いろいろ出ますが、System.ComponentModel.DataAnnotations.RequiredAttributeクラスが目当てのものですね。

Visual Studio アセンブリ参照があることを確認してください

結局、System.ComponentModel.DataAnnotations名前空間が足りなかったとわかりました。
あとはこれをusingに記述すればオッケーです。
どの名前空間やクラスにあるのかわからないときはオブジェクトブラウザーを使いましょう。

ちなみに、当たり前ですが、NuGetにあるやつや外部DLLなどのクラスの場合は、参照につっこまなければ表示されません。
その場合は素直にググりましょう。
もしくはオブジェクトブラウザーの検索対象を「マイソリューション」ではなく、「すべてのコンポーネント」にすると出てくることもあるかもです。



Visual Studio アセンブリ参照があることを確認してください

このサイトのコードを
ほぼそのままコピーして実行した結果エラーが起きてしまいます。
エラーが
型または名前空間の名前Registrykeyが見つかりませんでした。
usingディレクディブまたはアセンブリ参照が指定されていることを確認してください。24行

現在のコンテキストにregistryという名前が存在しません。

とでてきます24行とでてきます。

usingディレクディブまたはアセンブリ参照が指定されていることを確認してくださいとあったので先ほどの参照リンクの

使用ライブラリ:Registryクラス(Microsoft.Win32名前空間)
使用ライブラリ:RegistryKeyクラス(Microsoft.Win32名前空間)
使用ライブラリ:NullReferenceException例外(System名前空間)
に目を付けました。
これらのクラスのアセンブリーを追加して
visual studio2017でソリューションエクスプローラーで参照を右クリックして

参照の追加 →アセンブリと移動して
これらのアセンブリの
mscorlibを追加したところ
ビルドシステムに自動的に参照されています。とでてきました。
usingディレクティブのほうも
using mscorlib;という風にいれてみたらエラーが増える一方でした。
下のプログラムを実行するにはどうすればいいですか。
パソコンはwindows10proです。

C#

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace rejiyomikomi { class Program { static void Main(string[] args) { // 操作するレジストリ・キーの名前 string rKeyName = @"SOFTWARE\Microsoft.NETFramework"; // 取得処理を行う対象となるレジストリの値の名前 string rGetValueName = "InstallRoot"; // レジストリの取得 try { // レジストリ・キーのパスを指定してレジストリを開く RegistryKey rKey = Registry.LocalMachine.OpenSubKey(rKeyName); // レジストリの値を取得 string location = (string)rKey.GetValue(rGetValueName); // 開いたレジストリ・キーを閉じる rKey.Close(); // コンソールに取得したレジストリの値を表示 Console.WriteLine(location); } catch (NullReferenceException) { // レジストリ・キーまたは値が存在しない Console.WriteLine("レジストリ[" + rKeyName + "]の[" + rGetValueName + "]がありません!"); } } } }