Загруженное решение можно получить с помощью свойства DTE.Solution
, а активный документ - с помощью DTE.ActiveDocument
. На самом деле «активного проекта» не существует, потому что вы никогда не активируете проекты, вы только открываете решения (которые могут содержать несколько проектов) и файлы (которые оказываются в проектах).
Я подозреваю, что требуется время для отслеживания, возможно, достаточно будет получить текущее решение. Однако, если вам нужно специально различать проекты в решении, вы можете сделать это, используя DTE.ActiveDocument.ProjectItem.ContainingProject
.