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..60286c19c9 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 = true) + : 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 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) { } } } }