using BenchmarkDotNet.Configs; using BenchmarkDotNet.Jobs; using BenchmarkDotNet.Running; using BenchmarkDotNet.Toolchains.InProcess.Emit; using System; using System.Linq; namespace MaddoShared.Benchmarks; internal class Program { static void Main(string[] args) { // Check if --job argument is provided bool hasJobArg = args.Any(a => a.Contains("--job")); if (hasJobArg) { Console.WriteLine("Note: Overriding --job argument to use InProcess toolchain"); Console.WriteLine("This is required to avoid net10.0 vs net10.0-windows compatibility issues."); Console.WriteLine(); // Remove --job arguments and add our own InProcess config args = args.Where(a => !a.StartsWith("--job") && a != "dry" && a != "short").ToArray(); } // Create configuration that always uses InProcess toolchain var config = DefaultConfig.Instance .WithOptions(ConfigOptions.DisableOptimizationsValidator) .WithOptions(ConfigOptions.KeepBenchmarkFiles); // Run benchmarks - each class has [Config(typeof(InProcessConfig))] which provides InProcess toolchain BenchmarkSwitcher.FromAssembly(typeof(Program).Assembly).Run(args, config); } }