Udostępnij za pośrednictwem


Тэг, это ты… Другой способ организовывать файлы в Visual Studio

Грэг Дункан

Если вы читаете это блог, то весьма вероятно, что вы пользуетесь Visual Studio. И подобно большинству разработчиков вам нравится организовывать файлы и каталоги проектов «только таким способом». Но что если вам захочется придерживаться иной организации? Или иметь несколько планов расположения файлов? Не будет ли здорово, если вы сможете отмечать файл меткой и затем просматривать их в соответствии с этими метками? А также применять множество меток, так чтобы иметь несколько представлений для проекта? Например, как бизнес-представление и разработческое представление?

VsTagExplorer

Вас не раздражает то, что вы обязаны просматривать файлы решения способом, предоставляемым Visual Studio? С сегодняшнего дня вы можете просматривать свои файлы гораздо более удобным способом! Начните помечать файлы очень простым способом!

Щелкните правой клавишей мыши на проводнике решений, задайте метки каждому файлу, и затем начните передвигаться по меткам с помощью TagExplorer’а! (View->Other Windows->Tag explorer).

Visual Studio Tags (https://vstags.codeplex.com/)

clip_image002

clip_image004

Взглянем на проект...

clip_image006

 

 public void Tag()
{
     IEnumerable<FileItem> selectedItems = envDte.SelectedItems
         .OfType<SelectedItem>()
         .Select(si => new FileItem {Name = si.Name});
     IEnumerable<string> candidateTags = GetCandidateStrings(selectedItems);
     IEnumerable<string> tags = selector.Select(candidateTags);
     if (!selector.Selected) return;
     foreach (SelectedItem rootProjectItem in envDte.SelectedItems.OfType<SelectedItem>())
     {
         IVsHierarchy hierarchy;
         ((IVsSolution) solution).GetProjectOfUniqueName(
             rootProjectItem.ProjectItem.ContainingProject.UniqueName, out hierarchy);
         var buildPropertyStorage = hierarchy as IVsBuildPropertyStorage;
         if (buildPropertyStorage != null)
         {
             uint itemId;
             var fullPath =
                 (string) rootProjectItem.ProjectItem.Properties.Item("FullPath").Value;
             hierarchy.ParseCanonicalName(fullPath, out itemId);
             string newTags = string.Join(" ", tags);
             string currentTags;
             buildPropertyStorage.GetItemAttribute(itemId, "Tags", out currentTags);
             ApplyTags(currentTags, newTags, buildPropertyStorage, itemId);
         }
     }
}

Этот проект демонстрирует несколько вещей. Что вам не обязательно довольствоваться тем, как Visual Studio организует ваши файлы, как подключиться к проекту Visual Studio, и, наконец, как создавать распространяемые расширения Visual Studio.