From 90fdaa58dd5f4faa51b1c23a9cf25855fda4a516 Mon Sep 17 00:00:00 2001 From: Igor Velikorossov Date: Fri, 3 Nov 2023 04:13:02 +1100 Subject: [PATCH] Add .NET 9 support (#544) --- Directory.Build.props | 5 ++-- azure-pipelines-official.yml | 8 +++++ azure-pipelines.yml | 29 +++++++++++++++++++ .../Microsoft.VisualStudio.SlnGen.Tool.csproj | 10 +++++++ .../Program.cs | 6 ++-- ...osoft.VisualStudio.SlnGen.UnitTests.csproj | 4 ++- .../TestBase.cs | 2 ++ .../Microsoft.VisualStudio.SlnGen.csproj | 8 +++-- version.json | 2 +- 9 files changed, 65 insertions(+), 9 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index 02a849cd..ad02c44a 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,4 +1,4 @@ - + $(MSBuildThisFileDirectory)artifacts *log @@ -9,7 +9,8 @@ $(NoWarn);SA0001;SA1515;SA1005;SA1629;NETSDK1192 true true - true $(NoWarn);NETSDK1213 + true + true diff --git a/azure-pipelines-official.yml b/azure-pipelines-official.yml index 726b8169..5d32a546 100644 --- a/azure-pipelines-official.yml +++ b/azure-pipelines-official.yml @@ -8,6 +8,9 @@ variables: DotNet6Version: '6.x' DotNet7Version: '7.x' DotNet8Version: '8.x' + DotNet9Version: '9.x' + # Not using "--channel 9.0 --quality daily", see https://github.com/microsoft/slngen/issues/456 + DotNet9InstallArgs: '-version 9.0.100-alpha.1.23528.2' MSBuildArgs: '"/Property:Platform=$(BuildPlatform);Configuration=$(BuildConfiguration)" "/BinaryLogger:$(Build.SourcesDirectory)\$(ArtifactsDirectoryName)\msbuild.binlog"' SignType: 'Test' @@ -50,6 +53,11 @@ stages: version: '$(DotNet8Version)' includePreviewVersions: true + - script: | + powershell -NoProfile -ExecutionPolicy unrestricted -Command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; &([scriptblock]::Create((Invoke-WebRequest -UseBasicParsing 'https://dot.net/v1/dotnet-install.ps1'))) $(DotNet9InstallArgs) -InstallDir D:\a\_work\_tool\dotnet" + dotnet --info + displayName: 'Install .NET $(DotNet9Version)' + - task: MicroBuildSigningPlugin@1 displayName: 'Install MicroBuild Signing Plugin' inputs: diff --git a/azure-pipelines.yml b/azure-pipelines.yml index b742fc22..b0e20aca 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -8,6 +8,9 @@ variables: DotNet6Version: '6.x' DotNet7Version: '7.x' DotNet8Version: '8.x' + DotNet9Version: '9.x' + # Not using "--channel 9.0 --quality daily", see https://github.com/microsoft/slngen/issues/456 + DotNet9InstallArgs: '-version 9.0.100-alpha.1.23528.2' MSBuildArgs: '"/Property:Platform=$(BuildPlatform);Configuration=$(BuildConfiguration)"' SignType: 'Test' @@ -62,6 +65,24 @@ jobs: version: '$(DotNet8Version)' includePreviewVersions: true + - script: | + powershell -NoProfile -ExecutionPolicy unrestricted -Command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; &([scriptblock]::Create((Invoke-WebRequest -UseBasicParsing 'https://dot.net/v1/dotnet-install.ps1'))) $(DotNet9InstallArgs) -InstallDir C:\hostedtoolcache\windows\dotnet" + dotnet --info + displayName: 'Install .NET $(DotNet9Version) (Windows)' + condition: eq(variables.osName, 'Windows') + + - script: | + curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin $(DotNet9InstallArgs) --install-dir /opt/hostedtoolcache/dotnet + dotnet --info + displayName: 'Install .NET $(DotNet9Version) (Linux)' + condition: eq(variables.osName, 'Linux') + + - script: | + curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin $(DotNet9InstallArgs) --install-dir /Users/runner/hostedtoolcache/dotnet + dotnet --info + displayName: 'Install .NET $(DotNet9Version) (MacOS)' + condition: eq(variables.osName, 'MacOS') + - task: VSBuild@1 displayName: 'Build (Visual Studio)' inputs: @@ -107,6 +128,14 @@ jobs: testRunTitle: '$(osName) .NET 8.0' condition: succeededOrFailed() + - task: DotNetCoreCLI@2 + displayName: 'Run Unit Tests (.NET 9)' + inputs: + command: 'test' + arguments: '--no-restore --no-build --framework net9.0 /noautorsp $(MSBuildArgs) "/BinaryLogger:$(ArtifactsDirectoryName)/test-net9.0.binlog"' + testRunTitle: '$(osName) .NET 9.0' + condition: succeededOrFailed() + - task: PublishBuildArtifacts@1 displayName: 'Publish Artifacts' inputs: diff --git a/src/Microsoft.VisualStudio.SlnGen.Tool/Microsoft.VisualStudio.SlnGen.Tool.csproj b/src/Microsoft.VisualStudio.SlnGen.Tool/Microsoft.VisualStudio.SlnGen.Tool.csproj index 507e0860..dc586c1e 100644 --- a/src/Microsoft.VisualStudio.SlnGen.Tool/Microsoft.VisualStudio.SlnGen.Tool.csproj +++ b/src/Microsoft.VisualStudio.SlnGen.Tool/Microsoft.VisualStudio.SlnGen.Tool.csproj @@ -7,6 +7,7 @@ LatestMajor <_GetChildProjectCopyToPublishDirectoryItems>false true + true @@ -56,6 +57,15 @@ SkipGetTargetFrameworkProperties="true" TargetFramework="net8.0" Condition="'$(TargetDotNet8)' == 'true'" /> + + true + true net472;net6.0;net7.0 $(TargetFrameworks);net8.0 + $(TargetFrameworks);net9.0 false $(NoWarn);SA1600 diff --git a/src/Microsoft.VisualStudio.SlnGen.UnitTests/TestBase.cs b/src/Microsoft.VisualStudio.SlnGen.UnitTests/TestBase.cs index 1bd0867f..ac0c3922 100644 --- a/src/Microsoft.VisualStudio.SlnGen.UnitTests/TestBase.cs +++ b/src/Microsoft.VisualStudio.SlnGen.UnitTests/TestBase.cs @@ -17,6 +17,8 @@ public abstract class TestBase : MSBuildTestBase "7.0.0"; #elif NET8_0 "8.0.0"; +#elif NET9_0 + "9.0.0"; #else Unknown target framework #endif diff --git a/src/Microsoft.VisualStudio.SlnGen/Microsoft.VisualStudio.SlnGen.csproj b/src/Microsoft.VisualStudio.SlnGen/Microsoft.VisualStudio.SlnGen.csproj index be585bb5..08bc5120 100644 --- a/src/Microsoft.VisualStudio.SlnGen/Microsoft.VisualStudio.SlnGen.csproj +++ b/src/Microsoft.VisualStudio.SlnGen/Microsoft.VisualStudio.SlnGen.csproj @@ -1,9 +1,11 @@  true + true Exe net461;net472;net6.0;net7.0 $(TargetFrameworks);net8.0 + $(TargetFrameworks);net9.0 $(AllowedOutputExtensionsInPackageBuildOutputFolder);.config true true @@ -31,7 +33,7 @@ - + @@ -40,7 +42,7 @@ @@ -49,7 +51,7 @@ <_PreviousRuntimeFramework>%(RuntimeFramework.Version) - + diff --git a/version.json b/version.json index 70fc4d9c..f8108f47 100644 --- a/version.json +++ b/version.json @@ -1,6 +1,6 @@ { "$schema": "https://raw.githubusercontent.com/AArnott/Nerdbank.GitVersioning/master/src/NerdBank.GitVersioning/version.schema.json", - "version": "11.0", + "version": "11.1", "assemblyVersion": "3.0", "buildNumberOffset": -1, "publicReleaseRefSpec": [