diff --git a/msbuild/Xamarin.MacDev.Tasks/Tasks/FindAotCompilerTaskBase.cs b/msbuild/Xamarin.MacDev.Tasks/Tasks/FindAotCompilerTaskBase.cs index fb6d45ee69ef..14e9f59c4a3d 100644 --- a/msbuild/Xamarin.MacDev.Tasks/Tasks/FindAotCompilerTaskBase.cs +++ b/msbuild/Xamarin.MacDev.Tasks/Tasks/FindAotCompilerTaskBase.cs @@ -37,6 +37,10 @@ public override bool Execute () AotCompiler = ComputeValueUsingTarget (target, targetName); } + // Don't check if the aot compiler exists if an error was already reported. + if (Log.HasLoggedErrors) + return false; + if (!File.Exists (AotCompiler)) Log.LogError (MSBStrings.E7081 /*"The AOT compiler '{0}' does not exist." */, AotCompiler); diff --git a/msbuild/Xamarin.MacDev.Tasks/Tasks/FindILLink.cs b/msbuild/Xamarin.MacDev.Tasks/Tasks/FindILLink.cs index 8e26bd277ee3..ee4821886cc3 100644 --- a/msbuild/Xamarin.MacDev.Tasks/Tasks/FindILLink.cs +++ b/msbuild/Xamarin.MacDev.Tasks/Tasks/FindILLink.cs @@ -23,6 +23,10 @@ public override bool Execute () var illinkTaskPath = ComputeValueUsingTarget (target, targetName); + // Don't do anything else if something already went wrong (in particular don't check if illink.dll exists). + if (Log.HasLoggedErrors) + return false; + if (!string.IsNullOrEmpty (illinkTaskPath)) ILLinkPath = Path.Combine (Path.GetDirectoryName (illinkTaskPath), "illink.dll"); diff --git a/msbuild/Xamarin.MacDev.Tasks/Tasks/XamarinBuildTask.cs b/msbuild/Xamarin.MacDev.Tasks/Tasks/XamarinBuildTask.cs index d5c341c77cf9..2cbb947c9af3 100644 --- a/msbuild/Xamarin.MacDev.Tasks/Tasks/XamarinBuildTask.cs +++ b/msbuild/Xamarin.MacDev.Tasks/Tasks/XamarinBuildTask.cs @@ -47,6 +47,10 @@ protected string ComputeValueUsingTarget (string computeValueTarget, string targ try { ExecuteRestoreAsync (dotnetPath, projectPath, targetName, environment).Wait (); + // Don't try to run 'dotnet build' if restore failed. + if (Log.HasLoggedErrors) + return string.Empty; + return ExecuteBuildAsync (dotnetPath, projectPath, targetName, environment).Result; } finally { if (KeepTemporaryOutput) {