Я работаю над небольшим расширением Visual Studio, которое воздействует на проекты в решении, основываясь на том, установлены ли они в конфигурации активной сборки или нет. У меня проблема в том, что я не могу понять, как определить, что это за проекты.
Я реализовал IVsUpdateSolutionEvents
, в котором я реализую OnActiveProjectCfgChange
. Я могу заставить Visual Studio вводить блок кода при изменении конфигурации, и я смог заставить его выполнять многие из тех вещей, которые я хотел бы сделать, но без возможности определить, какие проекты должны быть встроены в активные Конфигурация, я мертв в воде.
Моя реализация пока такова:
public int OnActiveProjectCfgChange(IVsHierarchy pIVsHierarchy)
{
var activeProjects = new HashSet<string>(); // TODO: Get projects in active configuration
foreach (Project project in _dte.Solution.Projects)
{
if (project.Kind != "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}" // C#
&& project.Kind != "{F184B08F-C81C-45F6-A57F-5ABD9991F28F}" // VB
&& project.Kind != "{13B7A3EE-4614-11D3-9BC7-00C04F79DE25}" // VSA
)
continue;
IVsHierarchy projectHierarchy;
_solutionService.GetProjectOfUniqueName(project.UniqueName, out projectHierarchy);
if (activeProjects.Contains(project.UniqueName))
{
// Project is to be built
}
else
{
// Project is not to be built
}
return VSConstants.S_OK;
}
}
Что мне нужно сделать, так это выяснить, как заполнить HashSet
в начале функции. (Помечено TODO
). Я искал и искал, но я не нашел то, что мне нужно.
У кого-нибудь есть ссылки на документацию или пример кода, которые могут помочь мне двигаться вперед?