几天前我访问了 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/