[bug] C++20 on MSVC 192.8
### Environment details

* Conan version: 2.0


### Steps to reproduce

With Conan 1.x I was able to test my C++20 project on Visual Studio 2019. The minimum requirement was 192.8, and it worked fine. However, Conan 2.0 do not allow setting the "Visual Studio" compiler anymore, and it claims that C++20 is supported only by Visual Studio 2022 (MSVC 193). Is it possible to test C++20 projects on Visual Studio 2019 with Conan 2.0?

### Logs

```
Found msvc 16
Detected profile:
Found gcc 8.1
[settings]
Found clang 15.0
arch=x86_64
WARN: This profile is a guess of your environment, please check it.
build_type=Release
WARN: The output of this command is not guaranteed to be stable and can change in future Conan versions.
compiler=msvc
WARN: Use your own profile files for stability.
compiler.cppstd=14
Saving detected profile to C:\\Users\\runneradmin\\.conan2\\profiles\\default
compiler.runtime=dynamic
compiler.runtime_type=Release
compiler.version=192
os=Windows

ERROR: The provided compiler.cppstd=[20](https://github.com/mpusz/units/actions/runs/4254422620/jobs/7400645358#step:12:21) requires at least msvc>=193 but version 192 provided
Error: Process completed with exit code 1.
```

See more: https://github.com/mpusz/units/actions/runs/4254422620/jobs/7400645358#step:12:38
diff --git a/conan/tools/build/cppstd.py b/conan/tools/build/cppstd.py
index bdf08ca39..423c0a279 100644
--- a/conan/tools/build/cppstd.py
+++ b/conan/tools/build/cppstd.py
@@ -203,11 +203,17 @@ def _gcc_supported_cppstd(version):
 
 def _msvc_supported_cppstd(version):
     """
+    https://learn.microsoft.com/en-us/cpp/build/reference/std-specify-language-standard-version?view=msvc-170
+    - /std:c++14 starting in Visual Studio 2015 Update 3 (190)
+    - /std:c++17 starting in Visual Studio 2017 version 15.3. (191)
+    - /std:c++20 starting in Visual Studio 2019 version 16.11 (192)
     [14, 17, 20, 23]
     """
-    if version < "190":
+    if version < "190":  # pre VS 2015
         return []
-    if version < "191":
+    if version < "191":  # VS 2015
+        return ["14"]
+    if version < "192":  # VS 2017
         return ["14", "17"]
     if version < "193":
         return ["14", "17", "20"]
diff --git a/conans/client/profile_loader.py b/conans/client/profile_loader.py
index 6c51598f3..b94f9beaa 100644
--- a/conans/client/profile_loader.py
+++ b/conans/client/profile_loader.py
@@ -68,7 +68,8 @@ def _check_correct_cppstd(settings):
                     "14": "5.1",
                     "11": "4.5"}.get(cppstd)
         elif compiler == "msvc":
-            mver = {"20": "193",
+            mver = {"23": "193",
+                    "20": "192",
                     "17": "191",
                     "14": "190"}.get(cppstd)
         if mver and version < mver:
diff --git a/conans/test/unittests/tools/build/test_cppstd.py b/conans/test/unittests/tools/build/test_cppstd.py
index 2be74004e..b3d24c10a 100644
--- a/conans/test/unittests/tools/build/test_cppstd.py
+++ b/conans/test/unittests/tools/build/test_cppstd.py
@@ -79,8 +79,9 @@ def test_supported_cppstd_apple_clang(compiler, compiler_version, values):
 
 @pytest.mark.parametrize("compiler,compiler_version,values", [
     ("msvc", "180", []),
-    ("msvc", "190", ['14', '17']),
-    ("msvc", "191", ['14', '17', '20']),
+    ("msvc", "190", ['14']),
+    ("msvc", "191", ['14', '17']),
+    ("msvc", "192", ['14', '17', '20']),
     ("msvc", "193", ['14', '17', '20', '23']),
 ])
 def test_supported_cppstd_msvc(compiler, compiler_version, values):
['conans/test/unittests/tools/build/test_cppstd.py', 'conans/client/profile_loader.py', 'conan/tools/build/cppstd.py']