Skip to content

Commit

Permalink
Merge pull request cake-build#4381 from devlead/feature/net9_0
Browse files Browse the repository at this point in the history
Add .NET 9, C# 13 and remove out of support .NET 6 & 7
  • Loading branch information
devlead authored Oct 30, 2024
2 parents 3602587 + 11bd743 commit f83bbc0
Show file tree
Hide file tree
Showing 27 changed files with 111 additions and 153 deletions.
14 changes: 6 additions & 8 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,20 +16,19 @@ jobs:
os: [windows-latest, macos-13, ubuntu-latest]
steps:
- name: Get the sources
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Install .NET SDK 6.0.x - 8.0.x
uses: actions/setup-dotnet@v3
- name: Install .NET SDK 8.0.x - 9.0.x
uses: actions/setup-dotnet@v4
with:
dotnet-version: |
6.0.x
7.0.x
8.0.x
9.0.x
- name: Install .NET Core SDK (global.json)
uses: actions/setup-dotnet@v3
uses: actions/setup-dotnet@v4
with:
global-json-file: global.json

Expand All @@ -47,7 +46,6 @@ jobs:
script-path: tests/integration/Cake.Common/Build/GitHubActions/ValidateGitHubActionsProvider.cake
cake-version: tool-manifest
arguments: |
CAKE_NETCOREAPP_6_0_VERSION_OS: ${{ steps.build-cake.outputs.CAKE_NETCOREAPP_6_0_VERSION_OS }}
CAKE_NETCOREAPP_7_0_VERSION_OS: ${{ steps.build-cake.outputs.CAKE_NETCOREAPP_7_0_VERSION_OS }}
CAKE_NETCOREAPP_8_0_VERSION_OS: ${{ steps.build-cake.outputs.CAKE_NETCOREAPP_8_0_VERSION_OS }}
CAKE_NETCOREAPP_9_0_VERSION_OS: ${{ steps.build-cake.outputs.CAKE_NETCOREAPP_9_0_VERSION_OS }}
ValidateGitHubActionsProvider: true
2 changes: 1 addition & 1 deletion GitVersion.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
next-version: 4.0.0
next-version: 5.0.0
branches:
master:
regex: main
Expand Down
7 changes: 3 additions & 4 deletions build.cake
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ Task("Run-Unit-Tests")
() => GetFiles("./src/**/*.Tests.csproj"),
(parameters, project, context) =>
{
foreach(var framework in new[] { "net6.0", "net7.0", "net8.0" })
foreach(var framework in new[] { "net8.0", "net9.0" })
{
FilePath testResultsPath = MakeAbsolute(parameters.Paths.Directories.TestResults
.CombineWithFilePath($"{project.GetFilenameWithoutExtension()}_{framework}_TestResults.xml"));
Expand Down Expand Up @@ -368,9 +368,8 @@ Task("Run-Integration-Tests")
.DeferOnError()
.DoesForEach<BuildParameters, FilePath>(
parameters => new[] {
GetFiles($"{parameters.Paths.Directories.IntegrationTestsBinTool.FullPath}/**/net6.0/**/Cake.dll").Single(),
GetFiles($"{parameters.Paths.Directories.IntegrationTestsBinTool.FullPath}/**/net7.0/**/Cake.dll").Single(),
GetFiles($"{parameters.Paths.Directories.IntegrationTestsBinTool.FullPath}/**/net8.0/**/Cake.dll").Single()
GetFiles($"{parameters.Paths.Directories.IntegrationTestsBinTool.FullPath}/**/net8.0/**/Cake.dll").Single(),
GetFiles($"{parameters.Paths.Directories.IntegrationTestsBinTool.FullPath}/**/net9.0/**/Cake.dll").Single()
},
(parameters, cakeAssembly, context) =>
{
Expand Down
2 changes: 1 addition & 1 deletion global.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"src"
],
"sdk": {
"version": "8.0.403",
"version": "9.0.100-rc.2.24474.11",
"rollForward": "latestFeature"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ public void Should_Add_Additional_Arguments()
// Given
var fixture = new DotNetPackageAdderFixture();
fixture.PackageName = "Microsoft.AspNetCore.StaticFiles";
fixture.Settings.Framework = "net7.0";
fixture.Settings.Framework = "net8.0";
fixture.Settings.Interactive = true;
fixture.Settings.NoRestore = true;
fixture.Settings.PackageDirectory = "./src/project";
Expand All @@ -108,7 +108,7 @@ public void Should_Add_Additional_Arguments()
var result = fixture.Run();

// Then
var expected = "add package Microsoft.AspNetCore.StaticFiles --framework net7.0 --interactive --no-restore --package-directory \"/Working/src/project\" --prerelease --source \"http://www.nuget.org/api/v2/package\" --version \"1.0.0\" --verbosity diagnostic";
var expected = "add package Microsoft.AspNetCore.StaticFiles --framework net8.0 --interactive --no-restore --package-directory \"/Working/src/project\" --prerelease --source \"http://www.nuget.org/api/v2/package\" --version \"1.0.0\" --verbosity diagnostic";
Assert.Equal(expected, result.Args);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ public void Should_Add_Additional_Arguments()
var fixture = new DotNetPackageListerFixture();
fixture.Settings.ConfigFile = "./nuget.config";
fixture.Settings.Deprecated = true;
fixture.Settings.Framework = "net7.0";
fixture.Settings.Framework = "net8.0";
fixture.Settings.HighestMinor = true;
fixture.Settings.HighestPatch = true;
fixture.Settings.Prerelease = true;
Expand All @@ -94,7 +94,7 @@ public void Should_Add_Additional_Arguments()
var result = fixture.Run();

// Then
var expected = "list package --config \"/Working/nuget.config\" --deprecated --framework net7.0 --highest-minor --highest-patch --include-prerelease --include-transitive --interactive --outdated ";
var expected = "list package --config \"/Working/nuget.config\" --deprecated --framework net8.0 --highest-minor --highest-patch --include-prerelease --include-transitive --interactive --outdated ";
expected += "--source \"http://www.nuget.org/api/v2/package\" --source \"http://www.symbolserver.org/\" --vulnerable --format json --output-version 1";
Assert.Equal(expected, result.Args);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -143,15 +143,15 @@ public void Should_Add_Additional_Arguments()
var fixture = new DotNetReferenceAdderFixture();
fixture.ProjectReferences = new[] { (FilePath)"./lib1.csproj" };
fixture.Project = "ToDo.csproj";
fixture.Settings.Framework = "net7.0";
fixture.Settings.Framework = "net8.0";
fixture.Settings.Interactive = true;
fixture.Settings.Verbosity = DotNetVerbosity.Diagnostic;

// When
var result = fixture.Run();

// Then
var expected = "add \"ToDo.csproj\" reference \"/Working/lib1.csproj\" --framework net7.0 --interactive --verbosity diagnostic";
var expected = "add \"ToDo.csproj\" reference \"/Working/lib1.csproj\" --framework net8.0 --interactive --verbosity diagnostic";
Assert.Equal(expected, result.Args);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -143,14 +143,14 @@ public void Should_Add_Additional_Arguments()
var fixture = new DotNetReferenceRemoverFixture();
fixture.ProjectReferences = new[] { (FilePath)"./lib1.csproj" };
fixture.Project = "ToDo.csproj";
fixture.Settings.Framework = "net7.0";
fixture.Settings.Framework = "net8.0";
fixture.Settings.Verbosity = DotNetVerbosity.Diagnostic;

// When
var result = fixture.Run();

// Then
var expected = "remove \"ToDo.csproj\" reference \"/Working/lib1.csproj\" --framework net7.0 --verbosity diagnostic";
var expected = "remove \"ToDo.csproj\" reference \"/Working/lib1.csproj\" --framework net8.0 --verbosity diagnostic";
Assert.Equal(expected, result.Args);
}
}
Expand Down
18 changes: 0 additions & 18 deletions src/Cake.Common.Tests/Unit/Tools/OpenCover/OpenCoverTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -306,24 +306,6 @@ public void Should_Use_User_Register()
"-register:user -output:\"/Working/result.xml\"", result.Args);
}

[Fact]
public void Should_Not_break_when_old_string_registrations_are_used()
{
// Given
var fixture = new OpenCoverFixture();
#pragma warning disable CS0618 // Type or member is obsolete
fixture.Settings.Register = "Path64";
#pragma warning restore CS0618 // Type or member is obsolete

// When
var result = fixture.Run();

// Then
Assert.Equal("-target:\"/Working/tools/Test.exe\" " +
"-targetargs:\"-argument\" " +
"-register:Path64 -output:\"/Working/result.xml\"", result.Args);
}

[Fact]
public void Should_Add_ReturnTargetCode_If_ReturnTargetCodeOffset_Is_Set()
{
Expand Down
24 changes: 0 additions & 24 deletions src/Cake.Common/Tools/OpenCover/OpenCoverRegisterOption.cs
Original file line number Diff line number Diff line change
Expand Up @@ -65,30 +65,6 @@ public override string ToString()
{
return commandLineValue;
}

/// <summary>
/// Performs an implicit conversion from <see cref="System.String"/> to <see cref="OpenCoverRegisterOption"/>.
/// (Since the switch from pure string to <see cref="OpenCoverRegisterOption"/> is a breaking change.)
/// </summary>
/// <param name="option">The option.</param>
/// <returns>
/// The result of the conversion.
/// </returns>
[Obsolete("use new OpenCoverRegisterOption() instead.")]
public static implicit operator OpenCoverRegisterOption(string option)
{
if (string.IsNullOrEmpty(option))
{
return new OpenCoverRegisterOptionAdmin();
}

if (option.Equals("user", StringComparison.InvariantCultureIgnoreCase))
{
return new OpenCoverRegisterOptionUser();
}

return new OpenCoverRegisterOptionDll(new FilePath(option));
}
}

/// <summary>
Expand Down
10 changes: 9 additions & 1 deletion src/Cake.Core.Tests/Unit/CakeRuntimeTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,9 @@ public void Should_Return_Correct_Result_For_CoreClr()
Assert.Equal(".NETStandard,Version=v2.0", framework.FullName);
#else
var expect = string.Concat(".NETCoreApp,Version=v",
#if NET8_0
#if NET9_0
"9.0");
#elif NET8_0
"8.0");
#elif NET7_0
"7.0");
Expand Down Expand Up @@ -71,6 +73,7 @@ public void Should_Return_Correct_Result_For_CoreClr()
case ".NETCoreApp,Version=v5.0":
case ".NETCoreApp,Version=v6.0":
case ".NETCoreApp,Version=v7.0":
case ".NETCoreApp,Version=v8.0":
{
TestOutputHelper.WriteLine("Expect changed from {0} to {1}.", expect, framework.FullName);
expect = framework.FullName;
Expand All @@ -88,6 +91,7 @@ public void Should_Return_Correct_Result_For_CoreClr()
case ".NETCoreApp,Version=v5.0":
case ".NETCoreApp,Version=v6.0":
case ".NETCoreApp,Version=v7.0":
case ".NETCoreApp,Version=v8.0":
{
TestOutputHelper.WriteLine("Expect changed from {0} to {1}.", expect, framework.FullName);
expect = framework.FullName;
Expand All @@ -104,6 +108,7 @@ public void Should_Return_Correct_Result_For_CoreClr()
case ".NETCoreApp,Version=v5.0":
case ".NETCoreApp,Version=v6.0":
case ".NETCoreApp,Version=v7.0":
case ".NETCoreApp,Version=v8.0":
{
TestOutputHelper.WriteLine("Expect changed from {0} to {1}.", expect, framework.FullName);
expect = framework.FullName;
Expand All @@ -119,6 +124,7 @@ public void Should_Return_Correct_Result_For_CoreClr()
case ".NETCoreApp,Version=v5.0":
case ".NETCoreApp,Version=v6.0":
case ".NETCoreApp,Version=v7.0":
case ".NETCoreApp,Version=v8.0":
{
TestOutputHelper.WriteLine("Expect changed from {0} to {1}.", expect, framework.FullName);
expect = framework.FullName;
Expand All @@ -133,6 +139,7 @@ public void Should_Return_Correct_Result_For_CoreClr()
{
case ".NETCoreApp,Version=v6.0":
case ".NETCoreApp,Version=v7.0":
case ".NETCoreApp,Version=v8.0":
{
TestOutputHelper.WriteLine("Expect changed from {0} to {1}.", expect, framework.FullName);
expect = framework.FullName;
Expand All @@ -146,6 +153,7 @@ public void Should_Return_Correct_Result_For_CoreClr()
switch (framework.FullName)
{
case ".NETCoreApp,Version=v7.0":
case ".NETCoreApp,Version=v8.0":
{
TestOutputHelper.WriteLine("Expect changed from {0} to {1}.", expect, framework.FullName);
expect = framework.FullName;
Expand Down
2 changes: 1 addition & 1 deletion src/Cake.Core/Constants.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ internal static class Constants
public const ConsoleColor DefaultConsoleColor = (ConsoleColor)(-1);

public static readonly Version LatestBreakingChange = new Version(0, 26, 0);
public static readonly Version LatestPotentialBreakingChange = new Version(4, 0, 0);
public static readonly Version LatestPotentialBreakingChange = new Version(5, 0, 0);

public static class Settings
{
Expand Down
3 changes: 3 additions & 0 deletions src/Cake.Core/Scripting/ScriptConventions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,9 @@ private string GetFrameworkDefine()
case ".NETCoreApp,Version=v8.0":
return "NET8_0";

case ".NETCoreApp,Version=v9.0":
return "NET9_0";

default:
Console.Error.WriteLine(_runtime.BuiltFramework.FullName);
Console.Error.Flush();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,20 +17,16 @@
"type": "parameter",
"description": "The target framework for the project.",
"datatype": "choice",
"defaultValue": "net8.0",
"defaultValue": "net9.0",
"replaces": "TargetFrameworkValue",
"choices": [
{
"choice": "net6.0",
"description": "Target .NET 6"
},
{
"choice": "net7.0",
"description": "Target .NET 7"
},
{
"choice": "net8.0",
"description": "Target .NET 8"
},
{
"choice": "net9.0",
"description": "Target .NET 9"
}
]
}
Expand Down
3 changes: 3 additions & 0 deletions src/Cake.NuGet/Cake.NuGet.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@
<PackageReference Include="NuGet.Resolver" />
<PackageReference Include="NuGet.Common" />
<PackageReference Include="Newtonsoft.Json" />

<!-- Pin nuget transitive packages vulnerability issues NuGet.Packaging -->
<PackageReference Include="System.Security.Cryptography.Pkcs" />
</ItemGroup>

<ItemGroup>
Expand Down
3 changes: 1 addition & 2 deletions src/Cake/Cake.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@
<PackageReference Include="System.Reflection.Metadata" />
<PackageReference Include="Autofac" />
<PackageReference Include="Basic.Reference.Assemblies.Net80" Condition="'$(TargetFramework)' == 'net8.0'" />
<PackageReference Include="Basic.Reference.Assemblies.Net70" Condition="'$(TargetFramework)' == 'net7.0'" />
<PackageReference Include="Basic.Reference.Assemblies.Net60" Condition="'$(TargetFramework)' == 'net6.0'" />
<PackageReference Include="Basic.Reference.Assemblies.Net90" Condition="'$(TargetFramework)' == 'net9.0'" />
</ItemGroup>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,10 @@ public Assembly[] GetReferenceAssemblies()
IEnumerable<Assembly> TryGetReferenceAssemblies()
{
foreach (var reference in
#if NET6_0
Basic.Reference.Assemblies.Net60.References.All)
#elif NET7_0
Basic.Reference.Assemblies.Net70.References.All)
#else
#if NET8_0
Basic.Reference.Assemblies.Net80.References.All)
#else
Basic.Reference.Assemblies.Net90.References.All)
#endif
{
Assembly assembly;
Expand Down
19 changes: 11 additions & 8 deletions src/Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,20 @@
<GlobalPackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="All" />
<GlobalPackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="All" />
<PackageVersion Include="Autofac" Version="8.1.1" />
<PackageVersion Include="Basic.Reference.Assemblies.Net60" Version="1.7.9" />
<PackageVersion Include="Basic.Reference.Assemblies.Net70" Version="1.7.9" />
<PackageVersion Include="Basic.Reference.Assemblies.Net80" Version="1.7.9" />
<PackageVersion Include="Basic.Reference.Assemblies.Net90" Version="1.7.9" />
<PackageVersion Include="Cake.Frosting" Version="3.1.0.0" />
<PackageVersion Include="Castle.Core" Version="5.1.1" />
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Scripting" Version="4.11.0" />
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Scripting" Version="4.12.0-3.final" />
<PackageVersion Include="Microsoft.CSharp" Version="4.7.0" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="8.0.1" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="Microsoft.IdentityModel.JsonWebTokens" Version="8.1.2" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
<PackageVersion Include="Microsoft.NETCore.Platforms" Version="7.0.4" />
<PackageVersion Include="Microsoft.TestPlatform.ObjectModel" Version="17.11.1" />
<PackageVersion Include="Microsoft.Win32.Registry" Version="5.0.0" />
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />
<PackageVersion Include="NSubstitute" Version="5.1.0" />
<PackageVersion Include="NSubstitute" Version="5.3.0" />
<PackageVersion Include="NuGet.Common" Version="6.11.1" />
<PackageVersion Include="NuGet.Frameworks" Version="6.11.1" />
<PackageVersion Include="NuGet.Packaging" Version="6.11.1" />
Expand All @@ -31,10 +30,14 @@
<PackageVersion Include="Spectre.Console" Version="0.49.1" />
<PackageVersion Include="Spectre.Console.Cli" Version="0.49.1" />
<PackageVersion Include="Spectre.Verify.Extensions" Version="22.3.1" />
<PackageVersion Include="System.Collections.Immutable" Version="8.0.0" />
<PackageVersion Include="System.Reflection.Metadata" Version="8.0.1" />
<PackageVersion Include="Verify.Xunit" Version="27.0.1" />
<PackageVersion Include="System.Collections.Immutable" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="System.Reflection.Metadata" Version="9.0.0-rc.2.24473.5" />
<PackageVersion Include="Verify.Xunit" Version="27.1.0" />
<PackageVersion Include="xunit" Version="2.9.2" />
<PackageVersion Include="xunit.runner.visualstudio" Version="2.8.2" />

<!-- Pin nuget transitive packages vulnerability issues NuGet.Packaging -->
<PackageVersion Include="System.Security.Cryptography.Pkcs" Version="9.0.0-rc.2.24473.5" />
</ItemGroup>

</Project>
Loading

0 comments on commit f83bbc0

Please sign in to comment.