visual-studio-2012 - 如何在 Visual Studio 2012 的解决方案资源管理器中获取文件的 Visual Studio 2010 图标

标签 visual-studio-2012

几天前我访问了 Visual Studio 2012,我发现解决方案资源管理器对我的口味来说有点过于简约。
对于大多数图标 灰色和黑色 ,我必须付出额外的努力才能找到我正在寻找的文件。

有没有办法恢复到 2010 样式的文件图标?

最佳答案

我知道的唯一“解决方案”是卸载 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可以创 build 置该值的文件来设置该值,例如:

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)”中。

不作任何明示或暗示的保证。使用风险自负,并且只能在备份后使用。如果它符合您的要求,请告诉我。

关于visual-studio-2012 - 如何在 Visual Studio 2012 的解决方案资源管理器中获取文件的 Visual Studio 2010 图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12187178/

相关文章:

c# - 在 Winform 或其等同物中访问 PrintPageEventArgs.PageVisual

c++ - Visual Studio 2012 C++ 调试器未启动 : loading symbols

c++ - 如何调用用c++编写的程序调用我用c编写的DLL

c - 为什么我的循环没有到达文件末尾?

visual-studio-2012 - Visual Studio 2012 : UML Class Diagram and Template Bindings

visual-studio-2012 - 在 Visual Studio 中发布项目

.net - VS 2010 .NET 应用程序发布在 XP 或 Server 2003 上编译崩溃

c# - 没有麦克风? SpeechRecognitionEngine SetInputToDefaultAudioDevice() 问题

c++ - 使用 Visual Studio 2012 编译时,此代码会出现错误,但使用代码块就可以了

c# - Visual Studio 2012 WPF 设计器不显示。它只显示 xaml 源