У меня есть расширение Visual Studio, которому требуется доступ для чтения к полю Дополнительные параметры , которое находится в свойствах конфигурации проекта Visual C ++ в компиляторе C / C ++. Каков современный способ получения этого поля из расширения Visual Studio 2015-2019?
Кажется, я не могу использовать EnvDTE
, потому что перечисленные проекты VS2019 C ++ не могут быть преобразованы как VCProject
, что, в свою очередь, мешает мне получить VCCLCompilerTool.AdditionalOptions
.
Я мог бы извлечь некоторые другие свойства с помощью интерфейса IVsBuildPropertyStorage
:
IVsBuildPropertyStorage buildPropertyStorage = hierarchyProject as IVsBuildPropertyStorage;
buildPropertyStorage.GetPropertyValue("IntermediateOutputPath", configName, (uint)_PersistStorageType.PST_USER_FILE, out additionalOptions);
Но это возвращает пустую строку для Additional Параметры. Я подозреваю, что указанное свойство вообще не является свойством, поскольку оно не находится в контейнере PropertyGroup
, а находится под узлом ClCompile
в vcxproj, поэтому его, возможно, придется запросить по-другому.
Я также пробовал просматривать файл проекта, используя функции, представленные как часть пространства имен Microsoft.Build.Construction
, но это так же хорошо, как открытие проекта в парсере Xml. Кажется, нет простого способа оценки условий в документе, который делает этот подход ненадежным.
Возможно, есть некоторые функции, которые я мог бы использовать в пространстве имен Microsoft.VisualStudio.Workspace.Extensions
, но они недоступны в VS2015.
В идеале я бы не хотел использовать устаревшие API. На данный момент похоже, что нет надлежащей поддержки свойств ClCompiler.