She*_*har 5 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可以创建用于设置该值的文件来设置该值,例如:
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
Run Code Online (Sandbox Code Playgroud)
双击时,会将图标"恢复"为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());
}
}
}
Run Code Online (Sandbox Code Playgroud)
此特定位代码仅更改与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)"中.
不作任何明示或暗示的保证.只有在备份后才能使用,风险自负.如果它符合您的要求,请告诉我.
| 归档时间: |
|
| 查看次数: |
2172 次 |
| 最近记录: |