5

数日前に Visual Studio 2012 にアクセスできるようになりましたが、ソリューション エクスプローラーが私の好みには少しミニマルすぎることがわかりました。
ほとんどのアイコンがグレーと黒の場合、探しているファイルを見つけるために特別な努力をしなければなりません。

ファイルのアイコンを 2010 スタイルのアイコンに戻す方法はありますか?

4

2 に答える 2

5

私が知っている唯一の「解決策」は、Visual Studio 2012 をアンインストールすることです。

問題は、アイコンの登録方法にあります。2012 をインストールすると、すべての HKEY_CLASSES_ROOT アイコン登録が 2012 で上書きされます。概念的には、これらの登録を編集してアイコンを「復元」または変更することができます。たとえば、.csproj ファイルは、C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC#\VCSPackages\csproj.dll ファイルの最初のアイコンにリンクされています。代わりに、アイコンが C:\Program Files (x86)\Microsoft Visual Studio 10.0 \VC#\VCSPackages\csproj.dllの最初のアイコンを指すように変更できます。その値を設定する.regファイルを作成して、その値を設定できます。たとえば、次のようになります。

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\VisualStudio.Launcher.csproj.11.0\DefaultIcon]
@="c:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC#\\VCSPackages\\csproj.dll,0

ダブルクリックすると、アイコンが 2010 のアイコンに「復元」されます。ただし、「復元」するすべてのアイコンに対してこれを行う必要があります。

アップデート:

レジストリを検索して 11.0 ファイルを指すアイコンを置き換え、それらを 10.0 ファイルに置き換えるコードを記述できると思います。例えば:

const string vsDirectory = "c:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\";
int index = vsDirectory.IndexOf("10.0\\", StringComparison.Ordinal);

var keyNames = Registry.ClassesRoot.GetSubKeyNames();
foreach (var name in keyNames.Where(name => name.StartsWith("VisualStudio.Launcher.")))
{
    using(RegistryKey key = Registry.ClassesRoot.OpenSubKey(name+@"\DefaultIcon"))
    {
        if (key == null) continue;
        var value = key.GetValue(null).ToString();
        if (!value.StartsWith(vsDirectory)) continue;
        var sb = new StringBuilder(value);
        var newValue = sb.Replace("10.0", "11.0", index, 4).ToString();
        var elements = newValue.Split(',');
        if (elements.Length <= 0) continue;
        var filename = elements[0];
        if (File.Exists(filename))
        {
            key.SetValue(null, sb.ToString());
        }
    }
}

この特定のコードは、VisualStudio.Launcher に関連付けられたクラス ルート キーのみを変更し、"c:\Program Files (x86)\Microsoft Visual Studio 11.0\" ディレクトリ内のファイルに含まれ、対応する 10.0 ファイル持つアイコンのみを変更します。 . つまり、.cs ファイルのアイコンは変更されません。これらのファイルの変更を含めるには、"VisualStudio.Launcher."アイコンの"VisualStudio."インデックスが 10 から 11 に変更されていないことも前提としています。

10 と 11 を一緒にインストールしていないため、SetValueこのコードのテストは行いませんでした。コードを使用する場合は、インストールが「c:\Program Files (x86)」にあることを確認する必要があります。

明示または黙示の保証はありません。自己責任で、バックアップしてから使用してください。それがあなたが望むことをするなら、私に知らせてください。

于 2012-08-29T22:33:04.800 に答える
-2
const string vsDirectory = "c:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\";
int index = vsDirectory.IndexOf("10.0\\", StringComparison.Ordinal);

"c:\Program Files (x86)\Microsoft Visual Studio 11.0\" には実際には文字列 "10.0\" が含まれていないため、インデックスは -1 です。

.. したがって、これを実行しても、動作するかどうかを確認するためにステップ実行しても、何も起こりません。そうではありません。レジストリを更新することを意図したもののための良いテスト作業

于 2012-10-09T00:29:25.667 に答える