From c5ed62a81b859bee512ade901bd8fa130141ac27 Mon Sep 17 00:00:00 2001 From: Ankit Jain Date: Wed, 3 Apr 2019 10:12:53 -0400 Subject: [msbuild] Fix possible NRE - and save only at the end. --- .../MonoDevelop.Projects.MSBuild/RemoteBuildEngineManager.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/RemoteBuildEngineManager.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/RemoteBuildEngineManager.cs index 5e18e203db..0d012cc043 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/RemoteBuildEngineManager.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/RemoteBuildEngineManager.cs @@ -561,7 +561,7 @@ namespace MonoDevelop.Projects.MSBuild ConfigFileUtilities.SetOrAppendSubelementAttributeValue (runtimeElement, "AppContextSwitchOverrides", "value", "Switch.System.IO.UseLegacyPathHandling=false"); } - foreach (var toolset in doc.Root.Elements ("msbuildToolsets").FirstOrDefault ()?.Elements ("toolset")) { + foreach (var toolset in doc.Root.Elements ("msbuildToolsets").FirstOrDefault ()?.Elements ("toolset") ?? Enumerable.Empty ()) { // This is required for MSBuild to properly load the searchPaths element (@radical knows why) SetMSBuildConfigProperty (toolset, "MSBuildBinPath", binDir, append: false, insertBefore: true); @@ -595,7 +595,7 @@ namespace MonoDevelop.Projects.MSBuild SetMSBuildConfigProperty (toolset, path.Property, path.Path); } - var projectImportSearchPaths = doc.Root.Elements ("msbuildToolsets").FirstOrDefault ()?.Elements ("toolset")?.FirstOrDefault ()?.Element ("projectImportSearchPaths"); + var projectImportSearchPaths = toolset.Element ("projectImportSearchPaths"); if (projectImportSearchPaths != null) { var os = Platform.IsMac ? "osx" : Platform.IsWindows ? "windows" : "unix"; XElement searchPaths = projectImportSearchPaths.Elements ("searchPaths").FirstOrDefault (sp => sp.Attribute ("os")?.Value == os); @@ -607,9 +607,10 @@ namespace MonoDevelop.Projects.MSBuild foreach (var path in MSBuildProjectService.GetProjectImportSearchPaths (runtime, false)) SetMSBuildConfigProperty (searchPaths, path.Property, path.Path, append: true, insertBefore: false); } - doc.Save (destinationConfigFile); } + doc.Save (destinationConfigFile); + // Update the sdk list for the MD resolver SdkInfo.SaveConfig (mdResolverConfig, MSBuildProjectService.FindRegisteredSdks ()); } -- cgit v1.2.3