diff --git a/src/cascadia/TerminalSettingsModel/VsDevCmdGenerator.h b/src/cascadia/TerminalSettingsModel/VsDevCmdGenerator.h index eab94e8954..c7abff14f0 100644 --- a/src/cascadia/TerminalSettingsModel/VsDevCmdGenerator.h +++ b/src/cascadia/TerminalSettingsModel/VsDevCmdGenerator.h @@ -26,12 +26,13 @@ namespace winrt::Microsoft::Terminal::Settings::Model void GenerateProfiles(const VsSetupConfiguration::VsSetupInstance& instance, bool hidden, std::vector>& profiles) const override; private: - bool IsInstanceValid(const VsSetupConfiguration::VsSetupInstance&) const + bool IsInstanceValid(const VsSetupConfiguration::VsSetupInstance& instance) const { // We only support version of VS from 15.0. // Per heaths: The [ISetupConfiguration] COM server only supports Visual Studio 15.0 and newer anyway. // Eliding the version range will improve the discovery performance by not having to parse or compare the versions. - return true; + std::error_code ec; + return std::filesystem::exists(GetDevCmdScriptPath(instance), ec) && !ec; } std::wstring GetProfileGuidSeed(const VsSetupConfiguration::VsSetupInstance& instance) const diff --git a/src/cascadia/TerminalSettingsModel/VsDevShellGenerator.h b/src/cascadia/TerminalSettingsModel/VsDevShellGenerator.h index 7557b503c0..d8b54752c8 100644 --- a/src/cascadia/TerminalSettingsModel/VsDevShellGenerator.h +++ b/src/cascadia/TerminalSettingsModel/VsDevShellGenerator.h @@ -28,7 +28,8 @@ namespace winrt::Microsoft::Terminal::Settings::Model private: bool IsInstanceValid(const VsSetupConfiguration::VsSetupInstance& instance) const { - return instance.VersionInRange(L"[16.2,)"); + std::error_code ec; + return instance.VersionInRange(L"[16.2,)") && std::filesystem::exists(GetDevShellModulePath(instance), ec) && !ec; } std::wstring GetProfileGuidSeed(const VsSetupConfiguration::VsSetupInstance& instance) const