Как dotnet восстановить многоцелевую структуру в CI для тестирования с использованием старой версии dotnet?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как dotnet восстановить многоцелевую структуру в CI для тестирования с использованием старой версии dotnet?

Сообщение Anonymous »

У меня есть пакет C#, который в настоящее время поддерживает dotnet 8, и я пытаюсь изменить его, чтобы добавить поддержку dotnet 6 и 7. Я собрал его для всех версий с использованием dotnet 8 локально на своем ноутбуке, используя net6.0;net7.0;net8.0 в файле .csproj. и удаление всех функций C#, добавленных после net6.0. Однако, когда я отправляю его на GitHub и мой рабочий процесс выполняется в действиях Github, я тестирую его на dotnet 6 и 7, а также на 8, и он прерывается на этапе восстановления dotnet.
Мой рабочий процесс:

Код: Выделить всё

name: .NET

on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]

env:
DOTNET_CLI_TELEMETRY_OPTOUT: true
DOTNET_GENERATE_ASPNET_CERTIFICATE: false

jobs:
build:

runs-on: macos-latest
name: .NET ${{ matrix.dotnet }}
strategy:
matrix:
dotnet:
- 8.0 # EOL: 2026-11-10
- 7.0 # EOL: 2024-05-14
- 6.0 # EOL: 2024-11-12
# version support doc: https://dotnet.microsoft.com/en-us/platform/support/policy/dotnet-core
steps:
- uses: actions/checkout@v3
with:
repository: getargv/getargv
path: getargv
token: ${{ secrets.GH_PAT }}
- name: Build libgetargv
run: make install_dylib
working-directory: getargv
- uses: actions/checkout@v3
with:
path: getargv.cs
- name: Setup .NET
uses: actions/setup-dotnet@v4
id: setup
with:
dotnet-version: ${{ matrix.dotnet }}.x
- name: Create temporary global.json
run: "echo '{\"sdk\":{\"version\": \"${{ steps.setup.outputs.dotnet-version }}\"}}' > ./global.json"
working-directory: getargv.cs
- name: Restore dependencies
run: dotnet restore
working-directory: getargv.cs
- name: Build
run: dotnet build --no-restore --framework net${{ matrix.dotnet }}
working-directory: getargv.cs
- name: Test
run: dotnet test --no-build --verbosity normal
working-directory: getargv.cs
Я могу установить платформу при сборке с помощью флага, но на этапе восстановления такого флага нет.
Ошибка, которую я получаю, вполне предсказуема:

Код: Выделить всё

Error: /Users/runner/.dotnet/sdk/7.0.404/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.TargetFrameworkInference.targets(160,5): error NETSDK1045: The current .NET SDK does not support targeting .NET 8.0.  Either target .NET 7.0 or lower, or use a version of the .NET SDK that supports .NET 8.0. Download the .NET SDK from https://aka.ms/dotnet/download [/Users/runner/work/getargv.cs/getargv.cs/getargv.cs/Getargv/Getargv.csproj::TargetFramework=net8.0]
Error: /Users/runner/.dotnet/sdk/7.0.404/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.TargetFrameworkInference.targets(160,5): error NETSDK1045: The current .NET SDK does not support targeting .NET 8.0.  Either target .NET 7.0 or lower, or use a version of the .NET SDK that supports .NET 8.0. Download the .NET SDK from https://aka.ms/dotnet/download [/Users/runner/work/getargv.cs/getargv.cs/getargv.cs/Getargv.Tool/Getargv.Tool.csproj::TargetFramework=net8.0]
Error: /Users/runner/.dotnet/sdk/7.0.404/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.TargetFrameworkInference.targets(160,5): error NETSDK1045: The current .NET SDK does not support targeting .NET 8.0.  Either target .NET 7.0 or lower, or use a version of the .NET SDK that supports .NET 8.0. Download the .NET SDK from https://aka.ms/dotnet/download [/Users/runner/work/getargv.cs/getargv.cs/getargv.cs/Getargv.Tests/Getargv.Tests.csproj::TargetFramework=net8.0]
Error: /Users/runner/.dotnet/sdk/6.0.417/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.TargetFrameworkInference.targets(144,5): error NETSDK1045: The current .NET SDK does not support targeting .NET 7.0.  Either target .NET 6.0 or lower, or use a version of the .NET SDK that supports .NET 7.0. [/Users/runner/work/getargv.cs/getargv.cs/getargv.cs/Getargv/Getargv.csproj]
Error: /Users/runner/.dotnet/sdk/6.0.417/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.TargetFrameworkInference.targets(144,5): error NETSDK1045: The current .NET SDK does not support targeting .NET 7.0.  Either target .NET 6.0 or lower, or use a version of the .NET SDK that supports .NET 7.0. [/Users/runner/work/getargv.cs/getargv.cs/getargv.cs/Getargv.Tool/Getargv.Tool.csproj]
Error: /Users/runner/.dotnet/sdk/6.0.417/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.TargetFrameworkInference.targets(144,5): error NETSDK1045: The current .NET SDK does not support targeting .NET 7.0.   Either target .NET 6.0 or lower, or use a version of the .NET SDK that supports .NET 7.0. [/Users/runner/work/getargv.cs/getargv.cs/getargv.cs/Getargv.Tests/Getargv.Tests.csproj]
Как люди тестируют старые версии dotnet, одновременно поддерживая новые версии?
Изменить:
Изменение команда сборки: dotnet build --framework net${{matrix.dotnet }} не использует указанную платформу для восстановления.

Подробнее здесь: https://stackoverflow.com/questions/776 ... -old-versi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»