Как определить сборку решения или проекта из пакета Visual Studio (VSIX)?
Как определить сборку решения или проекта из пакета Visual Studio (VSIX)?
Ответы (2)
Если у вас есть класс Package в вашей сборке, вы можете сделать:
DTE2 = Package.GetGlobalService(typeof(SDTE)) as DTE2;
Затем посмотрите на свойство IsOpen, чтобы узнать, открыто ли решение... посмотрите на свойство Projects, чтобы найти проекты.
Однако, если вы имеете в виду, как мне получить событие при открытии решения... тогда решения, например:
public sealed class MyPackage : Package
{
private DTE m_dte;
protected override void Initialize()
{
IServiceContainer serviceContainer = this as IServiceContainer;
m_dte = serviceContainer.GetService(typeof(SDTE)) as DTE;
var m_solutionEvents = m_dte.Events.SolutionEvents;
m_solutionEvents.Opened += SolutionOpened;
...
}
void SolutionOpened()
{
.... away you go...
}
}
ссылка: VSIX: получение объекта DTE ссылка: http://msdn.microsoft.com/en-us/library/envdte.solution.aspx
ссылка: http://msdn.microsoft.com/en-us/library/envdte._solution.projects.aspx
person
Stephen Gennard
schedule
10.11.2011
Глядя на эту страницу в MSDN: msdn.microsoft.com/en-us/library/; все события помечены как Инфраструктура. Только для внутреннего использования Майкрософт. Означает ли это, что их нельзя использовать в пакете VS?
- person Aaron Campbell; 04.10.2014
Я не думаю, что это отвечает на вопрос ОП (и у меня тот же вопрос), как можно обнаружить событие BUILD? Вы показали, как обнаружить событие SolutionOpened.
- person Rob B; 04.07.2016
как мне получить доступ к скомпилированным dll (проектам)? Я пишу расширение, которое зависит от скомпилированных проектов, то есть расширение будет читать метаданные из сборок
- person JobaDiniz; 21.09.2019
Взгляните на DTE.Events.BuildEvents
, там есть события для OnBuildBegin
и OnBuildDone
.
person
Daniel Fisher lennybacon
schedule
29.03.2019