diff --git a/tools/gn/command_gen.cc b/tools/gn/command_gen.cc
index 82046d2..a8033ab 100644
--- a/tools/gn/command_gen.cc
+++ b/tools/gn/command_gen.cc
@@ -39,6 +39,7 @@
 const char kSwitchIdeValueVs2013[] = "vs2013";
 const char kSwitchIdeValueVs2015[] = "vs2015";
 const char kSwitchIdeValueVs2017[] = "vs2017";
+const char kSwitchIdeValueVs2019[] = "vs2019";
 const char kSwitchIdeValueWinSdk[] = "winsdk";
 const char kSwitchIdeValueXcode[] = "xcode";
 const char kSwitchIdeValueJson[] = "json";
@@ -200,12 +201,15 @@
     }
     return res;
   } else if (ide == kSwitchIdeValueVs || ide == kSwitchIdeValueVs2013 ||
-             ide == kSwitchIdeValueVs2015 || ide == kSwitchIdeValueVs2017) {
+             ide == kSwitchIdeValueVs2015 || ide == kSwitchIdeValueVs2017 ||
+             ide == kSwitchIdeValueVs2019) {
     VisualStudioWriter::Version version = VisualStudioWriter::Version::Vs2017;
     if (ide == kSwitchIdeValueVs2013)
       version = VisualStudioWriter::Version::Vs2013;
     else if (ide == kSwitchIdeValueVs2015)
       version = VisualStudioWriter::Version::Vs2015;
+    else if (ide == kSwitchIdeValueVs2019)
+      version = VisualStudioWriter::Version::Vs2019;
 
     std::string sln_name;
     if (command_line->HasSwitch(kSwitchSln))
@@ -333,6 +337,7 @@
       "vs2013" - Visual Studio 2013 project/solution files.
       "vs2015" - Visual Studio 2015 project/solution files.
       "vs2017" - Visual Studio 2017 project/solution files.
+      "vs2019" - Visual Studio 2019 project/solution files.
       "xcode" - Xcode workspace/solution files.
       "qtcreator" - QtCreator project files.
       "json" - JSON file containing target information
diff --git a/tools/gn/visual_studio_writer.cc b/tools/gn/visual_studio_writer.cc
index 7033358..9870fbc 100644
--- a/tools/gn/visual_studio_writer.cc
+++ b/tools/gn/visual_studio_writer.cc
@@ -72,12 +72,15 @@
 const char kToolsetVersionVs2013[] = "v120";               // Visual Studio 2013
 const char kToolsetVersionVs2015[] = "v140";               // Visual Studio 2015
 const char kToolsetVersionVs2017[] = "v141";               // Visual Studio 2017
+const char kToolsetVersionVs2019[] = "v142";               // Visual Studio 2019
 const char kProjectVersionVs2013[] = "12.0";               // Visual Studio 2013
 const char kProjectVersionVs2015[] = "14.0";               // Visual Studio 2015
 const char kProjectVersionVs2017[] = "15.0";               // Visual Studio 2017
+const char kProjectVersionVs2019[] = "16.0";               // Visual Studio 2019
 const char kVersionStringVs2013[] = "Visual Studio 2013";  // Visual Studio 2013
 const char kVersionStringVs2015[] = "Visual Studio 2015";  // Visual Studio 2015
 const char kVersionStringVs2017[] = "Visual Studio 2017";  // Visual Studio 2017
+const char kVersionStringVs2019[] = "Visual Studio 2019";  // Visual Studio 2019
 const char kWindowsKitsVersion[] = "10";                   // Windows 10 SDK
 const char kWindowsKitsDefaultVersion[] = "10.0.17134.0";  // Windows 10 SDK
 
@@ -299,6 +302,11 @@
       toolset_version_ = kToolsetVersionVs2017;
       version_string_ = kVersionStringVs2017;
       break;
+    case Version::Vs2019:
+      project_version_ = kProjectVersionVs2019;
+      toolset_version_ = kToolsetVersionVs2019;
+      version_string_ = kVersionStringVs2019;
+      break;
     default:
       NOTREACHED() << "Not a valid Visual Studio Version: " << version;
   }
@@ -517,9 +525,7 @@
   {
     std::unique_ptr<XmlElementWriter> properties =
         project.SubElement("PropertyGroup");
-    {
-      properties->SubElement("OutDir")->Text("$(SolutionDir)");
-    }
+    properties->SubElement("OutDir")->Text("$(SolutionDir)");
     properties->SubElement("TargetName")->Text("$(ProjectName)");
     if (target->output_type() != Target::GROUP) {
       properties->SubElement("TargetPath")->Text("$(OutDir)\\" + ninja_target);
diff --git a/tools/gn/visual_studio_writer.h b/tools/gn/visual_studio_writer.h
index 3193646..9b2a239 100644
--- a/tools/gn/visual_studio_writer.h
+++ b/tools/gn/visual_studio_writer.h
@@ -29,7 +29,8 @@
   enum Version {
     Vs2013 = 1,  // Visual Studio 2013
     Vs2015,      // Visual Studio 2015
-    Vs2017       // Visual Studio 2017
+    Vs2017,      // Visual Studio 2017
+    Vs2019,      // Visual Studio 2019
   };
 
   // Writes Visual Studio project and solution files. |sln_name| is the optional
