Получить список дополнительных интерфейсов с помощью EnvDTE

108
15

Как я могу получить список AdditionalIncludeDirectories из проекта c++?

Я пишу надстройку, в С#, которая смотрит на решение/проект c++, и для этого требуется информация такого типа, а также каталоги INCLUDE из Visual Studio (которые у меня также возникают проблемы с получением, потому что они не указаны в переменных среды системы).

Есть ли EnvDTE (или VCProject), которая может дать мне AdditionalIncludeDirectories или ProjectIncludeDir?

спросил(а) 2012-12-17T20:45:00+04:00 7 лет, 10 месяцев назад
1
Решение
70

В надстройке для VS2012 вы можете получить дополнительныеIncludeDirectories, выполнив следующее (обратите внимание, что это зависит от конфигурации проекта, а не от проекта):

Вам нужно добавить ссылку на сборку "Microsoft.VisualStudio.VCProjectEngine".

using Microsoft.VisualStudio.VCProjectEngine;

EnvDTE.Project project = null; // You get this project from somewhere
VCProject vcProject = project.Object as VCProject;
IEnumerable projectConfigurations = vcProject.Configurations as IEnumerable;
foreach (Object objectProjectConfig in projectConfigurations)
{
VCConfiguration vcProjectConfig = objectProjectConfig as VCConfiguration;
IEnumerable projectTools = vcProjectConfig.Tools as IEnumerable;
foreach (Object objectProjectTool in projectTools)
{
VCCLCompilerTool compilerTool = objectProjectTool as VCCLCompilerTool;
if (compilerTool != null)
{
string additionalIncludeDirs = compilerTool.AdditionalIncludeDirectories;
break;
}
}
}

Чтобы получить каталоги <"INCLUDE" из Visual Studio>, вы можете "спросить" конфигурацию для оценки переменной VS "IcludePath":

string includeDirs = vcProjectConfig.Evaluate("$(IncludePath)");

ответил(а) 2013-08-07T06:56:00+04:00 7 лет, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема