From f5e40c4b3f10d54225deb89bf24c6067a247913d Mon Sep 17 00:00:00 2001 From: Adam Sitnik Date: Tue, 16 Jun 2020 15:00:09 +0200 Subject: [PATCH 1/4] net5.0 does not contain "core" word but it's a .NET Core moniker, fixes #1477 --- src/BenchmarkDotNet/Toolchains/CoreRt/Generator.cs | 2 +- src/BenchmarkDotNet/Toolchains/CoreRun/CoreRunGenerator.cs | 2 +- .../Toolchains/CsProj/CsProjClassicNetToolchain.cs | 2 +- src/BenchmarkDotNet/Toolchains/CsProj/CsProjGenerator.cs | 4 ++-- .../Toolchains/DotNetCli/DotNetCliGenerator.cs | 7 +++++-- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/BenchmarkDotNet/Toolchains/CoreRt/Generator.cs b/src/BenchmarkDotNet/Toolchains/CoreRt/Generator.cs index cc9684b93f..e8efcee884 100644 --- a/src/BenchmarkDotNet/Toolchains/CoreRt/Generator.cs +++ b/src/BenchmarkDotNet/Toolchains/CoreRt/Generator.cs @@ -26,7 +26,7 @@ internal Generator(string coreRtVersion, bool useCppCodeGenerator, string runtimeIdentifier, IReadOnlyDictionary feeds, bool useNuGetClearTag, bool useTempFolderForRestore, string packagesRestorePath, bool rootAllApplicationAssemblies, bool ilcGenerateCompleteTypeMetadata, bool ilcGenerateStackTraceData) - : base(targetFrameworkMoniker, cliPath, GetPackagesDirectoryPath(useTempFolderForRestore, packagesRestorePath), runtimeFrameworkVersion) + : base(targetFrameworkMoniker, cliPath, GetPackagesDirectoryPath(useTempFolderForRestore, packagesRestorePath), runtimeFrameworkVersion, isNetCore: true) { this.coreRtVersion = coreRtVersion; this.useCppCodeGenerator = useCppCodeGenerator; diff --git a/src/BenchmarkDotNet/Toolchains/CoreRun/CoreRunGenerator.cs b/src/BenchmarkDotNet/Toolchains/CoreRun/CoreRunGenerator.cs index f7108c9906..60b322177b 100644 --- a/src/BenchmarkDotNet/Toolchains/CoreRun/CoreRunGenerator.cs +++ b/src/BenchmarkDotNet/Toolchains/CoreRun/CoreRunGenerator.cs @@ -7,7 +7,7 @@ namespace BenchmarkDotNet.Toolchains.CoreRun public class CoreRunGenerator : CsProjGenerator { public CoreRunGenerator(FileInfo sourceCoreRun, FileInfo copyCoreRun, string targetFrameworkMoniker, string cliPath, string packagesPath) - : base(targetFrameworkMoniker, cliPath, packagesPath, runtimeFrameworkVersion: null) + : base(targetFrameworkMoniker, cliPath, packagesPath, runtimeFrameworkVersion: null, isNetCore: true) { SourceCoreRun = sourceCoreRun; CopyCoreRun = copyCoreRun; diff --git a/src/BenchmarkDotNet/Toolchains/CsProj/CsProjClassicNetToolchain.cs b/src/BenchmarkDotNet/Toolchains/CsProj/CsProjClassicNetToolchain.cs index a7c9854d43..aaeeefdd49 100644 --- a/src/BenchmarkDotNet/Toolchains/CsProj/CsProjClassicNetToolchain.cs +++ b/src/BenchmarkDotNet/Toolchains/CsProj/CsProjClassicNetToolchain.cs @@ -24,7 +24,7 @@ public class CsProjClassicNetToolchain : Toolchain private CsProjClassicNetToolchain(string targetFrameworkMoniker, string name, string packagesPath = null, TimeSpan? timeout = null) : base(name, - new CsProjGenerator(targetFrameworkMoniker, cliPath: null, packagesPath: packagesPath, runtimeFrameworkVersion: null), + new CsProjGenerator(targetFrameworkMoniker, cliPath: null, packagesPath: packagesPath, runtimeFrameworkVersion: null, isNetCore: false), new DotNetCliBuilder(targetFrameworkMoniker, customDotNetCliPath: null, timeout: timeout), new Executor()) { diff --git a/src/BenchmarkDotNet/Toolchains/CsProj/CsProjGenerator.cs b/src/BenchmarkDotNet/Toolchains/CsProj/CsProjGenerator.cs index 74a3016e86..9d4757f0de 100644 --- a/src/BenchmarkDotNet/Toolchains/CsProj/CsProjGenerator.cs +++ b/src/BenchmarkDotNet/Toolchains/CsProj/CsProjGenerator.cs @@ -27,8 +27,8 @@ public class CsProjGenerator : DotNetCliGenerator public string RuntimeFrameworkVersion { get; } - public CsProjGenerator(string targetFrameworkMoniker, string cliPath, string packagesPath, string runtimeFrameworkVersion) - : base(targetFrameworkMoniker, cliPath, packagesPath) + public CsProjGenerator(string targetFrameworkMoniker, string cliPath, string packagesPath, string runtimeFrameworkVersion, bool isNetCore) + : base(targetFrameworkMoniker, cliPath, packagesPath, isNetCore) { RuntimeFrameworkVersion = runtimeFrameworkVersion; } diff --git a/src/BenchmarkDotNet/Toolchains/DotNetCli/DotNetCliGenerator.cs b/src/BenchmarkDotNet/Toolchains/DotNetCli/DotNetCliGenerator.cs index 5381ede2ea..47ff074fc3 100644 --- a/src/BenchmarkDotNet/Toolchains/DotNetCli/DotNetCliGenerator.cs +++ b/src/BenchmarkDotNet/Toolchains/DotNetCli/DotNetCliGenerator.cs @@ -18,15 +18,18 @@ public abstract class DotNetCliGenerator : GeneratorBase [PublicAPI] public string PackagesPath { get; } + protected bool IsNetCore { get; } + [PublicAPI] - protected DotNetCliGenerator(string targetFrameworkMoniker, string cliPath, string packagesPath) + protected DotNetCliGenerator(string targetFrameworkMoniker, string cliPath, string packagesPath, bool isNetCore) { TargetFrameworkMoniker = targetFrameworkMoniker; CliPath = cliPath; PackagesPath = packagesPath; + IsNetCore = isNetCore; } - protected override string GetExecutableExtension() => TargetFrameworkMoniker.Contains("core") ? ".dll" : ".exe"; + protected override string GetExecutableExtension() => IsNetCore ? ".dll" : ".exe"; /// /// we need our folder to be on the same level as the project that we want to reference From 239deeb5f5e408ecc6d5973d10bcdf42e3c65b4c Mon Sep 17 00:00:00 2001 From: Adam Sitnik Date: Tue, 16 Jun 2020 15:04:10 +0200 Subject: [PATCH 2/4] forgot to include in previous commit --- src/BenchmarkDotNet/Toolchains/CsProj/CsProjCoreToolchain.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BenchmarkDotNet/Toolchains/CsProj/CsProjCoreToolchain.cs b/src/BenchmarkDotNet/Toolchains/CsProj/CsProjCoreToolchain.cs index 300697c5c8..879cfa596f 100644 --- a/src/BenchmarkDotNet/Toolchains/CsProj/CsProjCoreToolchain.cs +++ b/src/BenchmarkDotNet/Toolchains/CsProj/CsProjCoreToolchain.cs @@ -31,7 +31,7 @@ private CsProjCoreToolchain(string name, IGenerator generator, IBuilder builder, [PublicAPI] public static IToolchain From(NetCoreAppSettings settings) => new CsProjCoreToolchain(settings.Name, - new CsProjGenerator(settings.TargetFrameworkMoniker, settings.CustomDotNetCliPath, settings.PackagesPath, settings.RuntimeFrameworkVersion), + new CsProjGenerator(settings.TargetFrameworkMoniker, settings.CustomDotNetCliPath, settings.PackagesPath, settings.RuntimeFrameworkVersion, isNetCore: true), new DotNetCliBuilder(settings.TargetFrameworkMoniker, settings.CustomDotNetCliPath, settings.Timeout), new DotNetCliExecutor(settings.CustomDotNetCliPath), settings.CustomDotNetCliPath); From 3ac5f979002313240d7ada804f01aff830cf050c Mon Sep 17 00:00:00 2001 From: Adam Sitnik Date: Tue, 16 Jun 2020 15:16:17 +0200 Subject: [PATCH 3/4] test fixes --- .../CsProjGeneratorTests.cs | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/tests/BenchmarkDotNet.Tests/CsProjGeneratorTests.cs b/tests/BenchmarkDotNet.Tests/CsProjGeneratorTests.cs index f2c817fd8f..fef52a4d76 100644 --- a/tests/BenchmarkDotNet.Tests/CsProjGeneratorTests.cs +++ b/tests/BenchmarkDotNet.Tests/CsProjGeneratorTests.cs @@ -18,15 +18,15 @@ public class CsProjGeneratorTests private FileInfo TestAssemblyFileInfo = new FileInfo(typeof(CsProjGeneratorTests).Assembly.Location); [Theory] - [InlineData("net471")] - [InlineData("netcoreapp3.0")] - public void ItsPossibleToCustomizeProjectSdkBasedOnProjectSdkFromTheProjectFile(string targetFrameworkMoniker) + [InlineData("net471", false)] + [InlineData("netcoreapp3.0", true)] + public void ItsPossibleToCustomizeProjectSdkBasedOnProjectSdkFromTheProjectFile(string targetFrameworkMoniker, bool isNetCore) { const string withCustomProjectSdk = @" "; - AssertParsedSdkName(withCustomProjectSdk, targetFrameworkMoniker, "CUSTOM"); + AssertParsedSdkName(withCustomProjectSdk, targetFrameworkMoniker, "CUSTOM", isNetCore); } [Fact] @@ -37,7 +37,7 @@ public void ItsImpossibleToCustomizeProjectSdkForFullFrameworkAppsBasedOnTheImpo "; - AssertParsedSdkName(withCustomProjectImport, "net471", "Microsoft.NET.Sdk"); + AssertParsedSdkName(withCustomProjectImport, "net471", "Microsoft.NET.Sdk", false); } [Fact] @@ -48,13 +48,13 @@ public void ItsPossibleToCustomizeProjectSdkForNetCoreAppsBasedOnTheImportOfSdk( "; - AssertParsedSdkName(withCustomProjectImport, "netcoreapp3.0", "Microsoft.NET.Sdk.WindowsDesktop"); + AssertParsedSdkName(withCustomProjectImport, "netcoreapp3.0", "Microsoft.NET.Sdk.WindowsDesktop", true); } [AssertionMethod] - private void AssertParsedSdkName(string csProjContent, string targetFrameworkMoniker, string expectedSdkValue) + private void AssertParsedSdkName(string csProjContent, string targetFrameworkMoniker, string expectedSdkValue, bool isNetCore) { - var sut = new CsProjGenerator(targetFrameworkMoniker, null, null, null); + var sut = new CsProjGenerator(targetFrameworkMoniker, null, null, null, isNetCore); using (var reader = new StringReader(csProjContent)) { @@ -76,7 +76,7 @@ public void UseWpfSettingGetsCopied() "; - var sut = new CsProjGenerator("netcoreapp3.0", null, null, null); + var sut = new CsProjGenerator("netcoreapp3.0", null, null, null, true); using (var reader = new StringReader(withUseWpfTrue)) { @@ -105,7 +105,7 @@ public void SettingsFromPropsFileImportedUsingAbsolutePathGetCopies() "; - var sut = new CsProjGenerator("netcoreapp3.0", null, null, null); + var sut = new CsProjGenerator("netcoreapp3.0", null, null, null, true); using (var reader = new StringReader(importingAbsolutePath)) { @@ -136,7 +136,7 @@ public void SettingsFromPropsFileImportedUsingRelativePathGetCopies() "; - var sut = new CsProjGenerator("netcoreapp3.0", null, null, null); + var sut = new CsProjGenerator("netcoreapp3.0", null, null, null, true); using (var reader = new StringReader(importingRelativePath)) { @@ -170,7 +170,7 @@ public void TheDefaultFilePathShouldBeUsedWhenAnAssemblyLocationIsEmpty() var benchmarkCase = BenchmarkCase.Create(target, Job.Default, null, config); var benchmarks = new[] { new BenchmarkBuildInfo(benchmarkCase, config.CreateImmutableConfig(), 999) }; - var projectGenerator = new SteamLoadedBuildPartition("netcoreapp3.0", null, null, null); + var projectGenerator = new SteamLoadedBuildPartition("netcoreapp3.0", null, null, null, true); string binariesPath = projectGenerator.ResolvePathForBinaries(new BuildPartition(benchmarks, new Resolver()), programName); string expectedPath = Path.Combine(Path.Combine(Directory.GetCurrentDirectory(), "BenchmarkDotNet.Bin"), programName); @@ -189,7 +189,7 @@ public void TestAssemblyFilePathIsUsedWhenTheAssemblyLocationIsNotEmpty() var target = new Descriptor(typeof(MockFactory.MockBenchmarkClass), benchmarkMethod); var benchmarkCase = BenchmarkCase.Create(target, Job.Default, null, ManualConfig.CreateEmpty().CreateImmutableConfig()); var benchmarks = new[] { new BenchmarkBuildInfo(benchmarkCase, ManualConfig.CreateEmpty().CreateImmutableConfig(), 0) }; - var projectGenerator = new SteamLoadedBuildPartition("netcoreapp3.0", null, null, null); + var projectGenerator = new SteamLoadedBuildPartition("netcoreapp3.0", null, null, null, true); var buildPartition = new BuildPartition(benchmarks, new Resolver()); string binariesPath = projectGenerator.ResolvePathForBinaries(buildPartition, programName); @@ -204,7 +204,8 @@ internal string ResolvePathForBinaries(BuildPartition buildPartition, string pro return base.GetBuildArtifactsDirectoryPath(buildPartition, programName); } - public SteamLoadedBuildPartition(string targetFrameworkMoniker, string cliPath, string packagesPath, string runtimeFrameworkVersion) : base(targetFrameworkMoniker, cliPath, packagesPath, runtimeFrameworkVersion) { } + public SteamLoadedBuildPartition(string targetFrameworkMoniker, string cliPath, string packagesPath, string runtimeFrameworkVersion, bool isNetCore) + : base(targetFrameworkMoniker, cliPath, packagesPath, runtimeFrameworkVersion, isNetCore) { } } } } From 7bb252b7ea2718f772b81fcae55f67364e8dd18c Mon Sep 17 00:00:00 2001 From: Adam Sitnik Date: Wed, 15 Jul 2020 16:26:03 +0200 Subject: [PATCH 4/4] fix build after sync with master branch --- src/BenchmarkDotNet/Toolchains/CoreRt/Generator.cs | 2 +- src/BenchmarkDotNet/Toolchains/CoreRun/CoreRunGenerator.cs | 2 +- src/BenchmarkDotNet/Toolchains/CsProj/CsProjCoreToolchain.cs | 2 +- src/BenchmarkDotNet/Toolchains/CsProj/CsProjGenerator.cs | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/BenchmarkDotNet/Toolchains/CoreRt/Generator.cs b/src/BenchmarkDotNet/Toolchains/CoreRt/Generator.cs index e8efcee884..cc9684b93f 100644 --- a/src/BenchmarkDotNet/Toolchains/CoreRt/Generator.cs +++ b/src/BenchmarkDotNet/Toolchains/CoreRt/Generator.cs @@ -26,7 +26,7 @@ internal Generator(string coreRtVersion, bool useCppCodeGenerator, string runtimeIdentifier, IReadOnlyDictionary feeds, bool useNuGetClearTag, bool useTempFolderForRestore, string packagesRestorePath, bool rootAllApplicationAssemblies, bool ilcGenerateCompleteTypeMetadata, bool ilcGenerateStackTraceData) - : base(targetFrameworkMoniker, cliPath, GetPackagesDirectoryPath(useTempFolderForRestore, packagesRestorePath), runtimeFrameworkVersion, isNetCore: true) + : base(targetFrameworkMoniker, cliPath, GetPackagesDirectoryPath(useTempFolderForRestore, packagesRestorePath), runtimeFrameworkVersion) { this.coreRtVersion = coreRtVersion; this.useCppCodeGenerator = useCppCodeGenerator; diff --git a/src/BenchmarkDotNet/Toolchains/CoreRun/CoreRunGenerator.cs b/src/BenchmarkDotNet/Toolchains/CoreRun/CoreRunGenerator.cs index 60b322177b..f7108c9906 100644 --- a/src/BenchmarkDotNet/Toolchains/CoreRun/CoreRunGenerator.cs +++ b/src/BenchmarkDotNet/Toolchains/CoreRun/CoreRunGenerator.cs @@ -7,7 +7,7 @@ namespace BenchmarkDotNet.Toolchains.CoreRun public class CoreRunGenerator : CsProjGenerator { public CoreRunGenerator(FileInfo sourceCoreRun, FileInfo copyCoreRun, string targetFrameworkMoniker, string cliPath, string packagesPath) - : base(targetFrameworkMoniker, cliPath, packagesPath, runtimeFrameworkVersion: null, isNetCore: true) + : base(targetFrameworkMoniker, cliPath, packagesPath, runtimeFrameworkVersion: null) { SourceCoreRun = sourceCoreRun; CopyCoreRun = copyCoreRun; diff --git a/src/BenchmarkDotNet/Toolchains/CsProj/CsProjCoreToolchain.cs b/src/BenchmarkDotNet/Toolchains/CsProj/CsProjCoreToolchain.cs index 879cfa596f..300697c5c8 100644 --- a/src/BenchmarkDotNet/Toolchains/CsProj/CsProjCoreToolchain.cs +++ b/src/BenchmarkDotNet/Toolchains/CsProj/CsProjCoreToolchain.cs @@ -31,7 +31,7 @@ private CsProjCoreToolchain(string name, IGenerator generator, IBuilder builder, [PublicAPI] public static IToolchain From(NetCoreAppSettings settings) => new CsProjCoreToolchain(settings.Name, - new CsProjGenerator(settings.TargetFrameworkMoniker, settings.CustomDotNetCliPath, settings.PackagesPath, settings.RuntimeFrameworkVersion, isNetCore: true), + new CsProjGenerator(settings.TargetFrameworkMoniker, settings.CustomDotNetCliPath, settings.PackagesPath, settings.RuntimeFrameworkVersion), new DotNetCliBuilder(settings.TargetFrameworkMoniker, settings.CustomDotNetCliPath, settings.Timeout), new DotNetCliExecutor(settings.CustomDotNetCliPath), settings.CustomDotNetCliPath); diff --git a/src/BenchmarkDotNet/Toolchains/CsProj/CsProjGenerator.cs b/src/BenchmarkDotNet/Toolchains/CsProj/CsProjGenerator.cs index 9d4757f0de..60286c19c9 100644 --- a/src/BenchmarkDotNet/Toolchains/CsProj/CsProjGenerator.cs +++ b/src/BenchmarkDotNet/Toolchains/CsProj/CsProjGenerator.cs @@ -27,7 +27,7 @@ public class CsProjGenerator : DotNetCliGenerator public string RuntimeFrameworkVersion { get; } - public CsProjGenerator(string targetFrameworkMoniker, string cliPath, string packagesPath, string runtimeFrameworkVersion, bool isNetCore) + public CsProjGenerator(string targetFrameworkMoniker, string cliPath, string packagesPath, string runtimeFrameworkVersion, bool isNetCore = true) : base(targetFrameworkMoniker, cliPath, packagesPath, isNetCore) { RuntimeFrameworkVersion = runtimeFrameworkVersion;