From bd4f92222b333bdb4788e6134001698893131116 Mon Sep 17 00:00:00 2001 From: Max Katz Date: Thu, 28 Aug 2025 12:17:07 -0700 Subject: [PATCH 1/6] Remove Solution field from Build class --- nukebuild/Build.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/nukebuild/Build.cs b/nukebuild/Build.cs index a48300e8..e963b47c 100644 --- a/nukebuild/Build.cs +++ b/nukebuild/Build.cs @@ -18,8 +18,6 @@ partial class Build : NukeBuild { - [Solution("Avalonia.Controls.TreeDataGrid.sln")] readonly Solution Solution; - static Lazy MsBuildExe = new Lazy(() => { if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) From 5ac1449262009d302dd0804a14e112731fd47d5f Mon Sep 17 00:00:00 2001 From: Max Katz Date: Thu, 28 Aug 2025 12:22:32 -0700 Subject: [PATCH 2/6] Update SDK --- .github/workflows/build-and-test.yml | 2 +- .nuke/build.schema.json | 4 ---- azure-pipelines.yml | 4 ++-- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 65472559..edad9a11 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -12,7 +12,7 @@ jobs: uses: actions/setup-dotnet@v4 with: dotnet-version: | - 8.0.x + 9.0.x - name: Install dependencies run: dotnet restore - name: Build diff --git a/.nuke/build.schema.json b/.nuke/build.schema.json index 76be051b..39d2202b 100644 --- a/.nuke/build.schema.json +++ b/.nuke/build.schema.json @@ -122,10 +122,6 @@ "SkipTests": { "type": "boolean", "description": "skip-tests" - }, - "Solution": { - "type": "string", - "description": "Path to a solution file that is automatically loaded. Default is Avalonia.Controls.TreeDataGrid.sln" } } }, diff --git a/azure-pipelines.yml b/azure-pipelines.yml index e19a47f2..5291c319 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -11,13 +11,13 @@ steps: - task: UseDotNet@2 displayName: 'Use .NET SDK' inputs: - version: 8.0.x + version: 9.0.x - task: CmdLine@2 displayName: 'Install Nuke' inputs: script: | - dotnet tool install --global Nuke.GlobalTool --version 6.0.3 + dotnet tool install --global Nuke.GlobalTool --version 9.0.4 - script: nuke --target RunTests --configuration Release displayName: 'Run Unit Tests' From 71dad8bda44a2e334815716e56c700f028b14b36 Mon Sep 17 00:00:00 2001 From: Max Katz Date: Thu, 28 Aug 2025 12:24:58 -0700 Subject: [PATCH 3/6] Remove Nuke.GlobalTool --- azure-pipelines.yml | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 5291c319..01ec7b0c 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -13,16 +13,10 @@ steps: inputs: version: 9.0.x -- task: CmdLine@2 - displayName: 'Install Nuke' - inputs: - script: | - dotnet tool install --global Nuke.GlobalTool --version 9.0.4 - -- script: nuke --target RunTests --configuration Release +- script: dotnet run --project ${{github.workspace}}/nukebuild/_build.csproj -- RunTests --configuration Release displayName: 'Run Unit Tests' -- script: nuke --target Package --configuration Release +- script: dotnet run --project ${{github.workspace}}/nukebuild/_build.csproj -- Package --configuration Release displayName: 'Generate Nuget Package' - task: PublishBuildArtifacts@1 From 0c46dbc896ef1404a2c593bb8814893efb08bcf6 Mon Sep 17 00:00:00 2001 From: Max Katz Date: Thu, 28 Aug 2025 12:26:06 -0700 Subject: [PATCH 4/6] Wrong variable --- azure-pipelines.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 01ec7b0c..ef84f2a0 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -13,10 +13,10 @@ steps: inputs: version: 9.0.x -- script: dotnet run --project ${{github.workspace}}/nukebuild/_build.csproj -- RunTests --configuration Release +- script: dotnet run --project $(Build.SourcesDirectory)/nukebuild/_build.csproj -- RunTests --configuration Release displayName: 'Run Unit Tests' -- script: dotnet run --project ${{github.workspace}}/nukebuild/_build.csproj -- Package --configuration Release +- script: dotnet run --project $(Build.SourcesDirectory)/nukebuild/_build.csproj -- Package --configuration Release displayName: 'Generate Nuget Package' - task: PublishBuildArtifacts@1 From bacbe126b5e33754ef074bd70e518822f852b547 Mon Sep 17 00:00:00 2001 From: Max Katz Date: Thu, 28 Aug 2025 12:27:48 -0700 Subject: [PATCH 5/6] Use .NET 9 --- nukebuild/_build.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nukebuild/_build.csproj b/nukebuild/_build.csproj index 497faaa7..4b6188a1 100644 --- a/nukebuild/_build.csproj +++ b/nukebuild/_build.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net9.0 false False From 3b4540f765d41ee78d485d761c40b53815f38569 Mon Sep 17 00:00:00 2001 From: Max Katz Date: Thu, 28 Aug 2025 12:32:03 -0700 Subject: [PATCH 6/6] Remove old code that might be broken --- nukebuild/Build.cs | 78 +++++++--------------------------------------- 1 file changed, 11 insertions(+), 67 deletions(-) diff --git a/nukebuild/Build.cs b/nukebuild/Build.cs index e963b47c..858e503a 100644 --- a/nukebuild/Build.cs +++ b/nukebuild/Build.cs @@ -18,25 +18,6 @@ partial class Build : NukeBuild { - static Lazy MsBuildExe = new Lazy(() => - { - if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) - return null; - - var msBuildDirectory = VSWhere("-latest -nologo -property installationPath -format value -prerelease").FirstOrDefault().Text; - - if (!string.IsNullOrWhiteSpace(msBuildDirectory)) - { - string msBuildExe = Path.Combine(msBuildDirectory, @"MSBuild\Current\Bin\MSBuild.exe"); - if (!System.IO.File.Exists(msBuildExe)) - msBuildExe = Path.Combine(msBuildDirectory, @"MSBuild\15.0\Bin\MSBuild.exe"); - - return msBuildExe; - } - - return null; - }, false); - BuildParameters Parameters { get; set; } protected override void OnBuildInitialized() { @@ -44,7 +25,7 @@ protected override void OnBuildInitialized() Information("Building version {0} of Avalonia.Controls.TreeDataGrid ({1}) using version {2} of Nuke.", Parameters.Version, Parameters.Configuration, - typeof(NukeBuild).Assembly.GetName().Version.ToString()); + typeof(NukeBuild).Assembly.GetName()?.Version?.ToString()); if (Parameters.IsLocalBuild) { @@ -67,29 +48,12 @@ protected override void OnBuildInitialized() void ExecWait(string preamble, string command, string args) { Console.WriteLine(preamble); - Process.Start(new ProcessStartInfo(command, args) {UseShellExecute = false}).WaitForExit(); + Process.Start(new ProcessStartInfo(command, args) {UseShellExecute = false})?.WaitForExit(); } ExecWait("dotnet version:", "dotnet", "--info"); ExecWait("dotnet workloads:", "dotnet", "workload list"); } - IReadOnlyCollection MsBuildCommon( - string projectFile, - Configure configurator = null) - { - return MSBuild(c => c - .SetProjectFile(projectFile) - // This is required for VS2019 image on Azure Pipelines - .When(_ => Parameters.IsRunningOnWindows && Parameters.IsRunningOnAzure, _ => _ - .AddProperty("JavaSdkDirectory", GetVariable("JAVA_HOME_11_X64"))) - .AddProperty("PackageVersion", Parameters.Version) - .AddProperty("iOSRoslynPathHackRequired", true) - .SetProcessToolPath(MsBuildExe.Value) - .SetConfiguration(Parameters.Configuration) - .SetVerbosity(MSBuildVerbosity.Minimal) - .Apply(configurator)); - } - Target Clean => _ => _.Executes(() => { Parameters.BuildDirs.ForEach(p => p.DeleteDirectory()); @@ -105,18 +69,11 @@ IReadOnlyCollection MsBuildCommon( .DependsOn(Clean) .Executes(() => { - if (Parameters.IsRunningOnWindows) - MsBuildCommon(Parameters.MSBuildSolution, c => c - .SetProcessAdditionalArguments("/r") - .AddTargets("Build") - ); - - else - DotNetBuild(c => c - .SetProjectFile(Parameters.MSBuildSolution) - .AddProperty("PackageVersion", Parameters.Version) - .SetConfiguration(Parameters.Configuration) - ); + DotNetBuild(c => c + .SetProjectFile(Parameters.MSBuildSolution) + .AddProperty("PackageVersion", Parameters.Version) + .SetConfiguration(Parameters.Configuration) + ); }); Target RunCoreLibsTests => _ => _ @@ -163,15 +120,10 @@ IReadOnlyCollection MsBuildCommon( .After(RunTests) .Executes(() => { - if (Parameters.IsRunningOnWindows) - - MsBuildCommon(Parameters.MSBuildSolution, c => c - .AddTargets("Pack")); - else - DotNetPack(c => c - .SetProject(Parameters.MSBuildSolution) - .SetConfiguration(Parameters.Configuration) - .AddProperty("PackageVersion", Parameters.Version)); + DotNetPack(c => c + .SetProject(Parameters.MSBuildSolution) + .SetConfiguration(Parameters.Configuration) + .AddProperty("PackageVersion", Parameters.Version)); }); Target RunTests => _ => _ @@ -197,11 +149,3 @@ public static int Main() => ? Execute(x => x.Package) : Execute(x => x.RunTests); } - -public static class ToolSettingsExtensions -{ - public static T Apply(this T settings, Configure configurator) - { - return configurator != null ? configurator(settings) : settings; - } -}