2012-11-02 2 views
1

폴더에 Visual Studio 2010 솔루션 폴더가 여러 개 있습니다.마지막으로 쓰기 시간으로 Visual Studio 솔루션 폴더 정렬

Windows 탐색기에서 '수정 한 날짜'의 내림차순으로 폴더를 정렬합니다.

어딘가에 솔루션 폴더의 C# 파일을 수정하면 해당 솔루션 폴더가 탐색기 목록의 맨 위로 이동하고 싶습니다. 나는. 해당 폴더를 "수정 된"것으로 간주하고 싶습니다.

이 동작을 가능하게하는 Visual Studio의 확장 프로그램이 있습니까? 또는 가장 최근에 수정 된 솔루션을 Windows 탐색기에서 가장 먼저 표시하도록 솔루션을 정렬하는 더 간단한 방법이 있습니까?

FileSystemWatcher을 사용하는이 C# 프로그램을 함께 사용하여 *.cs 파일의 변경 사항을 모니터링하고 해당 VS 솔루션 폴더를 터치합니다. 그러나 Directory.SetLastWriteTime(path, DateTime.Now)으로 전화하면 예외가 발생합니다. VS가 솔루션을 열면 해당 디렉토리가 잠겨서 SetLastWriteTime이 시간을 업데이트 할 수 없게됩니다.

using System; 
using System.IO; 

namespace MyDocumentsWatcher 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var watcher = 
       new FileSystemWatcher() 
       { 
        Path = "C:/Users/dharmatech/Documents", 
        Filter = "*.cs", 
        NotifyFilter = 
         NotifyFilters.LastWrite | 
         NotifyFilters.FileName | 
         NotifyFilters.DirectoryName, 
        IncludeSubdirectories = true, 
        EnableRaisingEvents = true 
       }; 

      watcher.Changed += (s, e) => 
       { 
        Console.WriteLine("{0} {1}", e.ChangeType, e.Name); 

        var path = e.FullPath; 

        while (true) 
        { 
         Console.WriteLine(path); 
         if (Path.GetDirectoryName(path) == @"C:\Users\dharmatech\Documents") 
         { 
          Directory.SetLastWriteTime(path, DateTime.Now); 
          break; 
         } 
         else 
          path = Path.GetDirectoryName(path); 
         System.Threading.Thread.Sleep(1000); 
        } 
       }; 

      Console.ReadLine(); 
     } 
    } 
} 

이 작업을 수행하는 방법에 대한 제안은 언제든지 환영합니다!

답변

1

내 솔루션은 위의 프로그램을 사용하는 것이지만 약간의 조정이 필요했습니다. VS 솔루션 폴더의 LastWriteTime을 업데이트하는 대신, 해당 폴더의 임시 파일을 만들고 삭제합니다. LastWriteTime을 업데이트하는 효과가 있습니다. 다음은 해당 프로그램의 버전입니다.

using System; 
using System.IO; 

namespace MyDocumentsWatcher 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var random = new Random(); 

      var watcher = 
       new FileSystemWatcher() 
       { 
        Path = @"C:\Users\dharmatech\Documents", 
        Filter = "*.cs", 
        NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName, 
        IncludeSubdirectories = true, 
        EnableRaisingEvents = true 
       }; 

      watcher.Changed += (s, e) => 
       { 
        Console.WriteLine("{0} {1}", e.ChangeType, e.Name); 

        var path = e.FullPath; 

        while (true) 
        { 
         if (Path.GetDirectoryName(path) == @"C:\Users\dharmatech\Documents") 
         { 
          var tmp = Path.Combine(path, random.Next().ToString()); 
          using (File.Create(tmp)) { } 
          File.Delete(tmp); 
          break; 
         } 
         else 
          path = Path.GetDirectoryName(path); 
        } 
       }; 

      Console.ReadLine(); 
     } 
    } 
}