Skip to content

Commit 6f3179c

Browse files
authored
Add support for .NET 8.0 (#253)
1 parent e0b8fd6 commit 6f3179c

File tree

15 files changed

+349
-78
lines changed

15 files changed

+349
-78
lines changed

.github/workflows/CI.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ env:
1818
ContinuousIntegrationBuild: 'true'
1919
DotNet6Version: '6.x'
2020
DotNet7Version: '7.x'
21+
DotNet8Version: '8.x'
2122

2223
jobs:
2324
BuildAndTest:
@@ -42,12 +43,13 @@ jobs:
4243
with:
4344
fetch-depth: 0
4445

45-
- name: Install .NET Core .NET ${{ env.DotNet6Version }}, and .NET ${{ env.DotNet7Version }}
46+
- name: Install .NET ${{ env.DotNet6Version }}, .NET ${{ env.DotNet7Version }}, and .NET ${{ env.DotNet8Version }}
4647
uses: actions/setup-dotnet@v3
4748
with:
4849
dotnet-version: |
4950
${{ env.DotNet6Version }}
5051
${{ env.DotNet7Version }}
52+
${{ env.DotNet8Version }}
5153
5254
- name: Build Solution
5355
run: dotnet build "/Property:Platform=${{ env.BuildPlatform }};Configuration=${{ env.BuildConfiguration }}" "/BinaryLogger:${{ env.ArtifactsDirectoryName }}/build.binlog"
@@ -63,6 +65,9 @@ jobs:
6365
- name: Run Unit Tests (.NET 7)
6466
run: dotnet test --logger trx --no-restore --no-build --framework net7.0 /noautorsp "/Property:Platform=${{ env.BuildPlatform }};Configuration=${{ env.BuildConfiguration }}" "/BinaryLogger:${{ env.ArtifactsDirectoryName }}/test-net7.0.binlog"
6567

68+
- name: Run Unit Tests (.NET 8)
69+
run: dotnet test --logger trx --no-restore --no-build --framework net8.0 /noautorsp "/Property:Platform=${{ env.BuildPlatform }};Configuration=${{ env.BuildConfiguration }}" "/BinaryLogger:${{ env.ArtifactsDirectoryName }}/test-net8.0.binlog"
70+
6671
- name: Upload Test Results
6772
uses: actions/upload-artifact@v2
6873
if: success() || failure()

.github/workflows/Official.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ env:
1717
OfficialBuild: 'true'
1818
DotNet6Version: '6.x'
1919
DotNet7Version: '7.x'
20+
DotNet8Version: '8.x'
2021

2122
jobs:
2223
build:
@@ -29,12 +30,13 @@ jobs:
2930
with:
3031
fetch-depth: 0
3132

32-
- name: Install .NET Core .NET ${{ env.DotNet6Version }}, and .NET ${{ env.DotNet7Version }}
33+
- name: Install .NET ${{ env.DotNet6Version }},.NET ${{ env.DotNet7Version }}, and .NET ${{ env.DotNet8Version }}
3334
uses: actions/setup-dotnet@v3
3435
with:
3536
dotnet-version: |
3637
${{ env.DotNet6Version }}
3738
${{ env.DotNet7Version }}
39+
${{ env.DotNet8Version }}
3840
3941
- name: Build Solution
4042
run: dotnet build "/Property:Platform=${{ env.BuildPlatform }};Configuration=${{ env.BuildConfiguration }}" "/BinaryLogger:${{ env.ArtifactsDirectoryName }}\build.binlog"

Directory.Packages.props

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,19 @@
22
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33
<PropertyGroup>
44
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
5-
<MicrosoftBuildPackageVersion>17.7.2</MicrosoftBuildPackageVersion>
5+
<MicrosoftBuildPackageVersion>17.8.3</MicrosoftBuildPackageVersion>
66
<MicrosoftBuildPackageVersion Condition="'$(TargetFramework)' == 'net6.0'">17.3.2</MicrosoftBuildPackageVersion>
7-
<MicrosoftBuildPackageVersion Condition="'$(TargetFramework)' == 'netcoreapp3.1'">16.9.0</MicrosoftBuildPackageVersion>
7+
<MicrosoftBuildPackageVersion Condition="'$(TargetFramework)' == 'net7.0'">17.7.2</MicrosoftBuildPackageVersion>
88
<NuGetPackageVersion>6.7.0</NuGetPackageVersion>
9-
<NuGetPackageVersion Condition="'$(TargetFramework)' == 'netcoreapp3.1'">5.7.1</NuGetPackageVersion>
109
</PropertyGroup>
1110
<ItemGroup>
11+
<PackageVersion Include="AssemblyShader" Version="1.0.3-preview" />
1212
<PackageVersion Include="Microsoft.Build" Version="$(MicrosoftBuildPackageVersion)" />
1313
<PackageVersion Include="Microsoft.Build.Utilities.Core" Version="$(MicrosoftBuildPackageVersion)" />
1414
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.7.0" />
1515
<PackageVersion Include="Microsoft.CodeAnalysis.PublicApiAnalyzers" Version="3.3.4" />
1616
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
1717
<PackageVersion Include="Microsoft.VisualStudio.Setup.Configuration.Interop" Version="3.7.2175" />
18-
<PackageVersion Include="NuGet.Frameworks" Version="$(NuGetPackageVersion)" />
1918
<PackageVersion Include="Shouldly" Version="4.2.1" />
2019
<PackageVersion Include="System.IO.Compression" Version="4.3.0" />
2120
<PackageVersion Include="xunit" Version="2.6.0" />

global.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"sdk": {
3-
"version": "7.0.0",
3+
"version": "8.0.100",
44
"rollForward": "latestMinor"
55
}
66
}

src/Microsoft.Build.Utilities.ProjectCreation.UnitTests/Microsoft.Build.Utilities.ProjectCreation.UnitTests.csproj

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
3-
<TargetFrameworks>net472;net6.0;net7.0</TargetFrameworks>
3+
<TargetFrameworks>net472;net6.0;net7.0;net8.0</TargetFrameworks>
44
<IsPackable>false</IsPackable>
55
</PropertyGroup>
66
<Import Project="..\Microsoft.Build.Utilities.ProjectCreation\build\MSBuild.ProjectCreation.props" Condition="'$(TargetFramework)' == 'net472'" />
77
<ItemGroup>
88
<Content Include="xunit.runner.json" CopyToOutputDirectory="PreserveNewest" />
99
</ItemGroup>
1010
<ItemGroup>
11-
<PackageReference Include="Microsoft.NET.Test.Sdk" />
11+
<PackageReference Include="AssemblyShader" />
12+
<PackageReference Include="Microsoft.NET.Test.Sdk" ShadeDependencies="NuGet.Frameworks" />
1213
<PackageReference Include="Shouldly" />
1314
<PackageReference Include="xunit" />
1415
<PackageReference Include="xunit.runner.visualstudio" />

src/Microsoft.Build.Utilities.ProjectCreation.UnitTests/TestBase.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@ protected TestBase()
1818
public string DotNetSdkVersion
1919
{
2020
get =>
21-
#if NETCOREAPP3_1
22-
"3.1.100";
23-
#elif NET6_0
21+
#if NET6_0
2422
"6.0.100";
25-
#elif NET7_0 || NETFRAMEWORK
23+
#elif NET7_0
2624
"7.0.100";
25+
#elif NET8_0 || NETFRAMEWORK
26+
"8.0.100";
2727
#else
2828
Unknown target framework!
2929
#endif
@@ -32,12 +32,12 @@ Unknown target framework!
3232
public string TargetFramework
3333
{
3434
get =>
35-
#if NETCOREAPP3_1
36-
"netcoreapp3.1";
37-
#elif NET6_0
35+
#if NET6_0
3836
"net6.0";
3937
#elif NET7_0
4038
"net7.0";
39+
#elif NET8_0
40+
"net8.0";
4141
#elif NETFRAMEWORK
4242
"net472";
4343
#else

src/Microsoft.Build.Utilities.ProjectCreation/MSBuildAssemblyResolver.net5.0.cs

Lines changed: 0 additions & 23 deletions
This file was deleted.

src/Microsoft.Build.Utilities.ProjectCreation/MSBuildAssemblyResolver.netcore.cs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
using System;
77
using System.Diagnostics;
88
using System.IO;
9+
using System.Reflection;
10+
using System.Runtime.Loader;
911
using System.Text.RegularExpressions;
1012

1113
namespace Microsoft.Build.Utilities.ProjectCreation
@@ -36,6 +38,12 @@ public static partial class MSBuildAssemblyResolver
3638
return (null, null);
3739
});
3840

41+
/// <inheritdoc cref="AssemblyLoadContext.Resolving" />
42+
public static Assembly? AssemblyResolve(AssemblyLoadContext assemblyLoadContext, AssemblyName requestedAssemblyName)
43+
{
44+
return AssemblyResolve(requestedAssemblyName, assemblyLoadContext.LoadFromAssemblyPath);
45+
}
46+
3947
private static string? GetDotNetBasePath()
4048
{
4149
using Process process = new Process
@@ -71,6 +79,10 @@ public static partial class MSBuildAssemblyResolver
7179

7280
process.WaitForExit();
7381

82+
DirectoryInfo? basePath = GetFirstMatchingSdk(process.StandardOutput.ReadToEnd());
83+
84+
return basePath?.FullName;
85+
7486
// Gets the highest version SDK that is the same major version as the runtime
7587
// You cannot always evaluate MSBuild projects using a different version of MSBuild than your runtime. This is because
7688
// if you're running as .NET 5.0, the .NET 6.0 MSBuild has dependencies that your app doesn't supply.
@@ -99,10 +111,6 @@ public static partial class MSBuildAssemblyResolver
99111

100112
return directoryInfo;
101113
}
102-
103-
DirectoryInfo? basePath = GetFirstMatchingSdk(process.StandardOutput.ReadToEnd());
104-
105-
return basePath?.FullName;
106114
}
107115
}
108116
}

src/Microsoft.Build.Utilities.ProjectCreation/MSBuildAssemblyResolver.netcoreapp3.1.cs

Lines changed: 0 additions & 28 deletions
This file was deleted.

src/Microsoft.Build.Utilities.ProjectCreation/MSBuildTestBase.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@
44

55
using System;
66
using System.IO;
7-
#if NET5_0_OR_GREATER
8-
using System.Reflection;
7+
#if NET6_0_OR_GREATER
98
using System.Runtime.Loader;
109
#endif
1110

@@ -22,7 +21,7 @@ static MSBuildTestBase()
2221
Environment.SetEnvironmentVariable("MSBuildExtensionsPath", MSBuildAssemblyResolver.DotNetSdksPath);
2322
Environment.SetEnvironmentVariable("MSBuildSDKsPath", string.IsNullOrWhiteSpace(MSBuildAssemblyResolver.DotNetSdksPath) ? null : Path.Combine(MSBuildAssemblyResolver.DotNetSdksPath, "Sdks"));
2423

25-
#if NET5_0_OR_GREATER
24+
#if NET6_0_OR_GREATER
2625
AssemblyLoadContext.Default.Resolving += MSBuildAssemblyResolver.AssemblyResolve;
2726
#else
2827
AppDomain.CurrentDomain.AssemblyResolve += MSBuildAssemblyResolver.AssemblyResolve;

0 commit comments

Comments
 (0)