Max Katz пре 2 година
родитељ
комит
8097a1c993
2 измењених фајлова са 21 додато и 10 уклоњено
  1. 20 9
      nukebuild/ApiDiffValidation.cs
  2. 1 1
      nukebuild/Build.cs

+ 20 - 9
nukebuild/ApiDiffValidation.cs

@@ -69,17 +69,28 @@ public static class ApiDiffValidation
                 right.Add(targetDllPath);
             }
 
-            var args = $""" -l={string.Join(',', left)} -r="{string.Join(',', right)}" """;
-            if (File.Exists(suppressionFile))
+            if (left.Any())
             {
-                args += $""" --suppression-file="{suppressionFile}" """;
-            }
-            if (updateSuppressionFile)
-            {
-                args += $""" --suppression-output-file="{suppressionFile}" --generate-suppression-file=true """;
-            }
+                var args = $""" -l={string.Join(',', left)} -r="{string.Join(',', right)}" """;
+                if (File.Exists(suppressionFile))
+                {
+                    args += $""" --suppression-file="{suppressionFile}" """;
+                }
 
-            apiCompatTool(args, tempFolder);
+                if (updateSuppressionFile)
+                {
+                    args += $""" --suppression-output-file="{suppressionFile}" --generate-suppression-file=true """;
+                }
+
+                var result = apiCompatTool(args, tempFolder)
+                    .Where(t => t.Type == OutputType.Err).ToArray();
+                if (result.Any())
+                {
+                    throw new AggregateException(
+                        $"ApiDiffValidation task has failed for \"{Path.GetFileName(packagePath)}\" package",
+                        result.Select(r => new Exception(r.Text)));
+                }
+            }
         }
     }
 

+ 1 - 1
nukebuild/Build.cs

@@ -37,7 +37,7 @@ partial class Build : NukeBuild
 {
     BuildParameters Parameters { get; set; }
 
-    [PackageExecutable("Microsoft.DotNet.ApiCompat.Tool", "Microsoft.DotNet.ApiCompat.Tool.dll")]
+    [PackageExecutable("Microsoft.DotNet.ApiCompat.Tool", "Microsoft.DotNet.ApiCompat.Tool.dll", Framework = "net6.0")]
     Tool ApiCompatTool;
 
     protected override void OnBuildInitialized()