
The recommended variant for specifying the SDK in .NET is the global.json file. This centrally guarantees that all computers on which the code is compiled ideally have the same SDK installed and use it.
I have now updated my blog schwabencode.com
to .NET 10 Preview 1 so that my global.json looks like this:
1{
2 "sdk": {
3 "version": "10.0.100-preview.1.25120.13"
4 }
5}
Everything can be built locally, but unfortunately not in my GitHub action. This is crashing with the following error:
1 Tool 'bundlerminifier.core.tool' is up to date.
2 You must install or update .NET to run this application.
3
4 App: /home/runner/.nuget/packages/bundlerminifier.core.tool/7.6.2/tools/net9.0/any/dotnet-bundle.dll
5 Architecture: x64
6 Framework: 'Microsoft.NETCore.App', version '9.0.0' (x64)
7 .NET location: /usr/share/dotnet/
8
9 The following frameworks were found:
10 8.0.13 at [/usr/share/dotnet/shared/Microsoft.NETCore.App]
11 10.0.0-preview.1.25080.5 at [/usr/share/dotnet/shared/Microsoft.NETCore.App]
I am using a tooling that requires .NET 9; .NET 9 is also installed on my developer machine, but not on the CI system. This error is typical for using dotnet tools, but also in a .NET preview phase such as we currently have with .NET 10; it is also a typical case with Entity Framework and the EF tooling.
The solution in this case is that we have two SDK versions as a requirement for compilation - and this specification is not supported in global.json. This was simply forgotten in the design.
The solution here is that two SDKs are installed via an external command; in the case of GitHub Actions via actions/setup-dotnet .
1jobs:
2 build-and-deploy:
3 runs-on: ubuntu-latest
4 steps:
5 - uses: actions/checkout@v4
6
7 - name: Setup .NET
8 uses: actions/setup-dotnet@v4
9 with:
10 dotnet-version: |
11 9.x
12 10.x
13
14 - name: dotnet restore
15 run: dotnet restore
16
17 - name: dotnet build
18 run: dotnet build --no-restore --configuration Release
And then you can build your code again.

Comments