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

Источник: msdn
Грэг Дункан

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

VsTagExplorer

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

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

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.


Страница сайта http://185.71.96.61
Оригинал находится по адресу http://185.71.96.61/home.asp?artId=26493