Browse Source

Mono: Buildsystem support for finding MSBuild from VS2019

Ignacio Etcheverry 6 years ago
parent
commit
e82b2def8e
2 changed files with 13 additions and 7 deletions
  1. 10 4
      modules/mono/mono_reg_utils.py
  2. 3 3
      modules/mono/utils/mono_reg_utils.cpp

+ 10 - 4
modules/mono/mono_reg_utils.py

@@ -40,7 +40,7 @@ def _reg_open_key_bits(key, subkey, bits):
 def _find_mono_in_reg(subkey, bits):
     try:
         with _reg_open_key_bits(winreg.HKEY_LOCAL_MACHINE, subkey, bits) as hKey:
-            value, regtype = winreg.QueryValueEx(hKey, 'SdkInstallRoot')
+            value = winreg.QueryValueEx(hKey, 'SdkInstallRoot')[0]
             return value
     except (WindowsError, OSError):
         return None
@@ -49,7 +49,7 @@ def _find_mono_in_reg(subkey, bits):
 def _find_mono_in_reg_old(subkey, bits):
     try:
         with _reg_open_key_bits(winreg.HKEY_LOCAL_MACHINE, subkey, bits) as hKey:
-            default_clr, regtype = winreg.QueryValueEx(hKey, 'DefaultCLR')
+            default_clr = winreg.QueryValueEx(hKey, 'DefaultCLR')[0]
             if default_clr:
                 return _find_mono_in_reg(subkey + '\\' + default_clr, bits)
             return None
@@ -91,7 +91,13 @@ def find_msbuild_tools_path_reg():
             if not val:
                 raise ValueError('Value of `installationPath` entry is empty')
 
-            return os.path.join(val, "MSBuild\\15.0\\Bin")
+            # Since VS2019, the directory is simply named "Current"
+            msbuild_dir = os.path.join(val, 'MSBuild\\Current\\Bin')
+            if os.path.isdir(msbuild_dir):
+                return msbuild_dir
+
+            # Directory name "15.0" is used in VS 2017
+            return os.path.join(val, 'MSBuild\\15.0\\Bin')
 
         raise ValueError('Cannot find `installationPath` entry')
     except ValueError as e:
@@ -106,7 +112,7 @@ def find_msbuild_tools_path_reg():
     try:
         subkey = r'SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0'
         with _reg_open_key(winreg.HKEY_LOCAL_MACHINE, subkey) as hKey:
-            value, regtype = winreg.QueryValueEx(hKey, 'MSBuildToolsPath')
+            value = winreg.QueryValueEx(hKey, 'MSBuildToolsPath')[0]
             return value
     except (WindowsError, OSError):
         return ''

+ 3 - 3
modules/mono/utils/mono_reg_utils.cpp

@@ -202,9 +202,9 @@ String find_msbuild_tools_path() {
 					}
 
 					// Since VS2019, the directory is simply named "Current"
-					String msBuildDirectory = val + "MSBuild\\Current\\Bin";
-					if (DirAccess::exists(msBuildDirectory)) {
-						return msBuildDirectory;
+					String msbuild_dir = val + "MSBuild\\Current\\Bin";
+					if (DirAccess::exists(msbuild_dir)) {
+						return msbuild_dir;
 					}
 
 					// Directory name "15.0" is used in VS 2017