Специфичные для ОС .NET 5 TFM не поддерживаются командой CLI 'dotnet new classlib'

Я пытаюсь создать новый проект .NET 5 C # classlib, используя интерфейс командной строки dotnet, как описано здесь:

https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-new#classlib

(Используя консоль разработчика - у меня установлена ​​последняя версия VS2019 (16.8.5) с рабочей нагрузкой .NET SDK).

Если я укажу параметр «framework» как «net5.0», он будет работать нормально:

dotnet new classlib -f net5.0

Однако на указанной выше странице есть ссылка на список фреймворков, который рекомендует TFM для конкретной ОС ('net5.0-windows'):

https://docs.microsoft.com/en-us/dotnet/standard/frameworks#suggested-targets

dotnet new classlib -f net5.0-windows

Но когда я пытаюсь использовать это, я получаю следующую ошибку

«net5.0-windows» не является допустимым значением для -f (Framework).

Это просто случай, когда шаблоны не соответствуют последним рекомендациям, или мне что-то не хватает в интерфейсе командной строки dotnet и TFM?

dotnet --info дает следующее:

.NET SDK (отражающий любой global.json): Версия: 5.0.103 Фиксация: 72dec52dbd

Среда выполнения: Имя ОС: Версия ОС Windows: 10.0.19042 Платформа ОС: RID Windows: win10-x64 Базовый путь: C: \ Program Files \ dotnet \ sdk \ 5.0.103 \

Хост (полезно для поддержки): Версия: 5.0.3 Фиксация: c636bbdc8a

Установленные SDK .NET: 2.1.202 [C: \ Program Files \ dotnet \ sdk] 2.1.504 [C: \ Program Files \ dotnet \ sdk] 2.1.505 [C: \ Program Files \ dotnet \ sdk] 2.1.507 [C: \ Program Files \ dotnet \ sdk] 2.1.508 [C: \ Program Files \ dotnet \ sdk] 2.1.509 [C: \ Program Files \ dotnet \ sdk] 2.1.512 [C: \ Program Files \ dotnet \ sdk] 2.1.513 [C: \ Program Files \ dotnet \ sdk] 2.1.515 [C: \ Program Files \ dotnet \ sdk] 2.1.602 [C: \ Program Files \ dotnet \ sdk] 2.1.700 [C : \ Program Files \ dotnet \ sdk] 2.1.701 [C: \ Program Files \ dotnet \ sdk] 2.1.801 [C: \ Program Files \ dotnet \ sdk] 2.2.202 [C: \ Program Files \ dotnet \ sdk ] 2.2.300 [C: \ Program Files \ dotnet \ sdk] 2.2.301 [C: \ Program Files \ dotnet \ sdk] 2.2.401 [C: \ Program Files \ dotnet \ sdk] 5.0.103 [C: \ Программные файлы \ dotnet \ sdk]

Чтобы установить дополнительные среды выполнения .NET или SDK: https://aka.ms/dotnet-download

Команда _1_ использует механизм шаблонов .NET Core. _2_ - один из готовых шаблонов, и вы можете найти его определение здесь.


person NⵙⵙB    schedule 18.02.2021    source источник
comment
@omajid Спасибо за ответ. Я добавил в сообщение вывод dotnet --info, и да, я планирую использовать функции, специфичные для Windows (библиотека будет использоваться приложениями WPF).   -  person omajid    schedule 19.02.2021
comment
Установленные среды выполнения .NET: Microsoft.AspNetCore.All 2.1.8 [C: \ Program Files \ dotnet \ shared \ Microsoft.AspNetCore.All] Microsoft.AspNetCore.All 2.1.9 [C: \ Program Files \ dotnet \ shared \ Microsoft .AspNetCore.All] Microsoft.AspNetCore.All 2.1.11 [C: \ Program Files \ dotnet \ shared \ Microsoft.AspNetCore.All] Microsoft.AspNetCore.All 2.1.12 [C: \ Program Files \ dotnet \ shared \ Microsoft .AspNetCore.All] Microsoft.AspNetCore.All 2.1.13 [C: \ Program Files \ dotnet \ shared \ Microsoft.AspNetCore.All] Microsoft.AspNetCore.All 2.1.16 [C: \ Program Files \ dotnet \ shared \ Microsoft .AspNetCore.All] Microsoft.AspNetCore.All 2.1.17 [C: \ Program Files \ dotnet \ shared \ Microsoft.AspNetCore.All] Microsoft.AspNetCore.All 2.1.19 [C: \ Program Files \ dotnet \ shared \ Microsoft .AspNetCore.All] Microsoft.AspNetCore.All 2.1.25 [C: \ Program Files \ dotnet \ shared \ Microsoft.AspNetCore.All] Microsoft.AspNetCore.All 2.2.3 [C: \ Program Files \ dotnet \ shared \ Microsoft .AspNetCore.All] Microsoft.AspNetCore.All 2.2.5 [C: \ Program Files \ dotnet \ shared \ Microsoft.AspNe tCore.All] Microsoft.AspNetCore.All 2.2.6 [C: \ Program Files \ dotnet \ shared \ Microsoft.AspNetCore.All] Microsoft.AspNetCore.All 2.2.8 [C: \ Program Files \ dotnet \ shared \ Microsoft. AspNetCore.All] Microsoft.AspNetCore.App 2.1.8 [C: \ Program Files \ dotnet \ shared \ Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 2.1.9 [C: \ Program Files \ dotnet \ shared \ Microsoft. AspNetCore.App] Microsoft.AspNetCore.App 2.1.11 [C: \ Program Files \ dotnet \ shared \ Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 2.1.12 [C: \ Program Files \ dotnet \ shared \ Microsoft. AspNetCore.App] Microsoft.AspNetCore.App 2.1.13 [C: \ Program Files \ dotnet \ shared \ Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 2.1.16 [C: \ Program Files \ dotnet \ shared \ Microsoft. AspNetCore.App] Microsoft.AspNetCore.App 2.1.17 [C: \ Program Files \ dotnet \ shared \ Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 2.1.19 [C: \ Program Files \ dotnet \ shared \ Microsoft. AspNetCore.App] Microsoft.AspNetCore.App 2.1.25 [C: \ Program Files \ dotnet \ shared \ Microsoft.AspNetCore.App] Микрофон rosoft.AspNetCore.App 2.2.3 [C: \ Program Files \ dotnet \ shared \ Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 2.2.5 [C: \ Program Files \ dotnet \ shared \ Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 2.2.6 [C: \ Program Files \ dotnet \ shared \ Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 2.2.8 [C: \ Program Files \ dotnet \ shared \ Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 3.1.12 [C: \ Program Files \ dotnet \ shared \ Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 5.0. 3 [C: \ Program Files \ dotnet \ shared \ Microsoft.AspNetCore.App] Microsoft.NETCore.App 2.0.9 [C: \ Program Files \ dotnet \ shared \ Microsoft.NETCore.App] Microsoft.NETCore.App 2.1. 8 [C: \ Program Files \ dotnet \ shared \ Microsoft.NETCore.App] Microsoft.NETCore.App 2.1.9 [C: \ Program Files \ dotnet \ shared \ Microsoft.NETCore.App] Microsoft.NETCore.App 2.1. 11 [C: \ Program Files \ dotnet \ shared \ Microsoft.NETCore.App] Microsoft.NETCore.App 2.1.12 [C: \ Program Files \ dotnet \ shared \ Microsoft.NETCore.App] Microsoft.NETCore.App 2.1. 13 [C: \ Program Files \ dotnet \ shared \ Microsoft.NETCore.App] Microsoft.NETCore.App 2.1.16 [C: \ Program Files \ dotnet \ shared \ Microsoft.NETCore.App] Microsoft.NETCore.App 2.1. 17 [C: \ Program Files \ dotnet \ shared \ Microsoft.NETCore.App] Microsoft.NETCore.App 2.1.19 [C: \ Program Files \ dotnet \ shared \ Microsoft.NETCore.App] Microsoft.NETCore.App 2.1. 25 [C: \ Program Files \ dotnet \ shared \ Microsoft.NETCore.App] Microsoft.NETCore.App 2.2.3 [C: \ Program Files \ dotnet \ shared \ Microsoft.NETCore.App] Microsoft.NETCore.Ap p 2.2.5 [C: \ Program Files \ dotnet \ shared \ Microsoft.NETCore.App] Microsoft.NETCore.App 2.2.6 [C: \ Program Files \ dotnet \ shared \ Microsoft.NETCore.App] Microsoft.NETCore. Приложение 2.2.8 [C: \ Program Files \ dotnet \ shared \ Microsoft.NETCore.App] Microsoft.NETCore.App 3.1.12 [C: \ Program Files \ dotnet \ shared \ Microsoft.NETCore.App] Microsoft.NETCore. Приложение 5.0.3 [C: \ Program Files \ dotnet \ shared \ Microsoft.NETCore.App] Microsoft.WindowsDesktop.App 3.1.12 [C: \ Program Files \ dotnet \ shared \ Microsoft.WindowsDesktop.App] Microsoft.WindowsDesktop. Приложение 5.0.3 [C: \ Program Files \ dotnet \ shared \ Microsoft.WindowsDesktop.App]   -  person NⵙⵙB    schedule 19.02.2021


Ответы (1)


По умолчанию dotnet new classlib поддерживает только choices для переключателя framework из всех установленных шаблонов, которые, например, на моем компьютере, значение должно быть одним из:

Вы можете использовать dotnet new classlib --help, чтобы узнать о своих возможностях.

net5.0            - Target net5.0
netstandard2.1    - Target netstandard2.1
netstandard2.0    - Target netstandard2.0
netcoreapp3.1     - Target netcoreapp3.1
netcoreapp3.0     - Target netcoreapp3.0
netcoreapp2.1     - Target netcoreapp2.1

Однако вы всегда можете переопределить структуру таргетинга, используя переключатель --target-framework-override, который является скрытым переключателем для dotnet new classlib:

Команда создает csproj файл:

dotnet new classlib --target-framework-override net5.0-windows

При этом, в качестве альтернативы, вы всегда можете вручную изменить TargetFramework в csproj файле, созданном для нацеливания на платформу, специфичную для ОС.

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net5.0-windows</TargetFramework>
  </PropertyGroup>

</Project>

Можете поделиться результатом запуска dotnet new? Кроме того, на той странице, которую вы связали, говорится об использовании classlib только тогда, когда это зависящая от ОС библиотека классов. Вам следует попробовать использовать dotnet new classlib TFM, если библиотека не зависит от платформы.

person weichch    schedule 19.02.2021