Как определить версию Visual Studio с помощью C#

Я пытаюсь найти надежный и перспективный способ определения установленных версий Visual Studio с помощью С#.

Моей первой идеей было использовать реестр. Но на своем ПК я обнаружил несколько ключей с именем VisualStudio, но не относящихся к полной установке. Например, я установил VS 2019 и VS Build Tools 2017, но в реестре я нахожу 14.0, 15.0, 16.0, 16.1 и т. д.

Есть ли какой-нибудь Visual-Studio-API, который можно было бы использовать?

Более глубокий смысл моего вопроса заключается в том, что я должен сделать следующий вызов, поддерживающий несколько версий VS: var developmentToolsEnvironment = (DTE)Marshal.GetActiveObject("VisualStudio.DTE.15.0");


person mu88    schedule 23.07.2019    source источник
comment
Возможно, вы могли бы просто попробовать разные значения в Type.GetTypeFromProgID("VisualStudio.DTE.x.0") и посмотреть, что не равно нулю.   -  person stuartd    schedule 23.07.2019
comment
Это верно, но, честно говоря, я думал избежать проб и ошибок.   -  person mu88    schedule 23.07.2019
comment
Проверьте наличие папок для конкретной версии на дисках.   -  person BWA    schedule 23.07.2019
comment
Вы можете проверить список установленных программ. stackoverflow.com/questions/908850/   -  person    schedule 23.07.2019
comment
@BWA Мало того, что это может привести к ложной информации (некоторые программы удаления не могут удалить все данные), но Visual Studio имеет разные структуры папок в зависимости от используемой версии. Я бы пошел в регистратуру.   -  person Cleptus    schedule 23.07.2019
comment
Что вы думаете об использовании HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall? Должно ли это быть достаточно безопасным?   -  person mu88    schedule 23.07.2019
comment
Взгляните на это... stackoverflow.com/questions/5089389/   -  person Reinstate Monica Cellio    schedule 23.07.2019


Ответы (1)


Вы можете использовать API конфигурации установки Visual Studio для обнаружения экземпляров Visual Studio 2017 и более поздних версий: Конфигурация установки Visual Studio Образцы.

person Sergey Vlasov    schedule 24.07.2019