22 Eylül 2010 Çarşamba

Solution Recent Clean

Beni sinir eden şey bir durumdu bu visual studio ide sini açtıktan sonra karşıma onca yığınla daha önce açmış olduğum silinmiş olanlar gelmesi hiç hoşuma gitmiyordu ufak bir araştırma sonucu şöyle bir library yazdım;


using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Win32;
using System.IO;

namespace RecentClear
{
    public enum IdeVersion
    {
        IDE90,
        IDE10
    }
    public class Recent
    {
        private IdeVersion versionSelect = IdeVersion.IDE90;

        public Recent(IdeVersion setVersion)
        {
            versionSelect = setVersion;
        }

        public bool clear()
        {
            bool status = false;
            RegistryKey key = Registry.CurrentUser.CreateSubKey(GetVersion(versionSelect));
            string[] list = key.GetValueNames();
            try
            {
                foreach (string k in list)
                {
                    if (IsFileSolution(key.GetValue(k).ToString()))
                        key.DeleteValue(k);
                }
                status = true;
            }
            catch
            {
                status = false;
            }
            if (list.Length == 0)
                status = true;
            return status;
        }
        private bool IsFileSolution(string filePath)
        {
            bool status = false;
            try
            {
                FileInfo file = new FileInfo(filePath);
                if (file.Extension == ".sln" || file.Extension == ".csproj")
                    status = true;
                else
                    status = false;
            }
            catch
            {
                if (filePath.Contains("vdproj") || filePath.Contains(".sln") || filePath.Contains(".csproj"))
                    status = true;
                else
                    status = false;
            }
            return status;
        }

        private string GetVersion(IdeVersion versionSelect)
        {
            string version = @"Software\Microsoft\VisualStudio\";
            switch (versionSelect)
            {
                case IdeVersion.IDE90:
                    version += "9.0";
                    break;
                case IdeVersion.IDE10:
                    version += "10.0";
                    break;
            }
            version += "\\ProjectMRUList";
            return version;
        }
    }
}

Burada gördüyseniz eğer önemli olan kıstaslar regedit teki adres satırları ve bu oluşturulacak dll hem 2008 de hemde 2010 da güzel bir şekilde çalışıyor örnek olarak bir application yapalım;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using RecentClear;

namespace SolutionClean
{
    class Program
    {
        static void Main(string[] args)
        {
            RecentClear.Recent ide = new Recent(IdeVersion.IDE90);
            if (ide.clear())
            {
                Console.WriteLine("Proje Listesi Temizlendi");
                Console.ReadLine();
            }
           
            else
            {
                Console.WriteLine("Proje Listesi Temizlenemedi");
                Console.ReadLine();
            }
           
        }
    }
}
Bir Console application yada artık size kalmış windows application da olabilir yaratıp önceden yaratmış olduğumuz dll imizi projemize reference ediyoruz ve sonrası zaten bilen arkadaşlar için kolay...

Hiç yorum yok:

Yorum Gönder