В моем расширении также есть функциональность компоновщика, которая создает дополнительные проекты и решения после или до того, как Visual Studio создаст текущее решение.Поэтому, когда я создаю дополнительные проекты, я должен блокировать любые попытки пользователя случайно создать текущее решение или любой из проектов.Он должен подождать.
Следующий код работает хорошо, но, похоже, он не блокирует сборку, когда я щелкаю правой кнопкой мыши по проекту в обозревателе решений и выбираю «Построить» или «Перестроить» в этом всплывающем меню..
private void OverrideBuildCommands()
{
/* this I can cancel/restart */
BuildCommandEvents = DTE.Events.CommandEvents["{5EFC7975-14BC-11CF-9B2B-00AA00573819}", 882];
BuildCommandEvents.BeforeExecute += BuildCommandEvents_BeforeExecute;
BuildCommandEvents.AfterExecute += BuildCommandEvents_AfterExecute;
BuildEvents = DTE.Events.BuildEvents;
DTE.Events.BuildEvents.OnBuildBegin += BuildEvents_OnBuildBegin;
DTE.Events.BuildEvents.OnBuildDone += BuildEvents_OnBuildDone;
DTE.Events.BuildEvents.OnBuildProjConfigBegin += BuildEvents_OnBuildProjConfigBegin;
DTE.Events.BuildEvents.OnBuildProjConfigDone += BuildEvents_OnBuildProjConfigDone;
/* this I can cancel/restart */
RebuildCommandEvents = DTE.Events.CommandEvents["{5EFC7975-14BC-11CF-9B2B-00AA00573819}", 883];
RebuildCommandEvents.BeforeExecute += RebuildCommandEvents_BeforeExecute;
RebuildCommandEvents.AfterExecute += RebuildCommandEvents_AfterExecute;
DTEEvents = DTE.Events.DTEEvents;
DTE.Events.DTEEvents.OnBeginShutdown += DTEEvents_OnBeginShutdown_CancelBuild;
}
Буду признателен за любую помощь или указатель.