Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эта статья применяется к: ✔️ .NET 8 SDK и более поздним версиям
В этом руководстве описано, как создать и упаковать средство .NET. Интерфейс командной строки .NET позволяет создать консольное приложение в качестве средства, которое другие пользователи могут установить и запустить. Средства .NET — это пакеты NuGet, установленные из .NET CLI. Дополнительные сведения о средствах см. в обзоре средств .NET.
Создаваемое средство — консольное приложение, которое принимает сведения о текущей среде .NET и отображает ее, включая версию .NET, сведения о операционной системе и параметры ключевых переменных среды.
Это руководство является первым в серии трех учебников. В этом руководстве описано, как создать и упаковить средство. В следующих двух руководствах вы используете инструмент в качестве глобального инструмента и используете его в качестве локального инструмента. Процедуры создания инструмента совпадают с тем, используется ли он как глобальный инструмент или как локальный инструмент.
Предпосылки
.NET SDK 10.0 или более поздняя версия.
В этом руководстве используется пакет SDK .NET версии 10.0, но это руководство относится к .NET 8.0 и более поздних версий.
Текстовый редактор или редактор кода по вашему выбору.
Создание проекта
Откройте командную строку и создайте папку с именем репозиторий.
Перейдите в папку репозитория и введите следующую команду:
dotnet new console -n dotnet-envКоманда создает новую папку dotnet-env в папке репозитория .
Перейдите в папку dotnet-env .
cd dotnet-env
Добавление кода
Откройте файл Program.cs с помощью редактора кода.
Замените содержимое следующим кодом:
using System.Reflection; using System.Runtime.InteropServices; var versionString = Assembly.GetEntryAssembly()? .GetCustomAttribute<AssemblyInformationalVersionAttribute>()? .InformationalVersion .ToString(); Console.WriteLine($"dotnet-env v{versionString}"); Console.WriteLine(new string('-', 40)); Console.WriteLine(); Console.WriteLine("Runtime"); Console.WriteLine($" .NET Version {Environment.Version}"); Console.WriteLine($" Framework {RuntimeInformation.FrameworkDescription}"); Console.WriteLine($" Runtime Identifier {RuntimeInformation.RuntimeIdentifier}"); Console.WriteLine(); Console.WriteLine("System"); Console.WriteLine($" OS {RuntimeInformation.OSDescription}"); Console.WriteLine($" Architecture {RuntimeInformation.OSArchitecture}"); Console.WriteLine($" Machine Name {Environment.MachineName}"); Console.WriteLine($" Processor Count {Environment.ProcessorCount}"); Console.WriteLine(); Console.WriteLine("Environment Variables"); string[] envVars = { "DOTNET_ROOT", "DOTNET_HOST_PATH", "DOTNET_CLI_HOME", "DOTNET_NOLOGO", "NUGET_PACKAGES", "DOTNET_ENVIRONMENT" }; foreach (string name in envVars) { string? value = Environment.GetEnvironmentVariable(name); Console.WriteLine($" {name,-24}{value ?? "(not set)"}"); }Программа использует инструкции верхнего уровня для чтения информационной версии сборки с помощью
Assembly.GetEntryAssembly()иAssemblyInformationalVersionAttribute, затем выводит имя приложения и разделительную строку перед отображением трех секций информации:-
Runtime — версия .NET, описание платформы и идентификатор среды выполнения с помощью
Environment.VersionиRuntimeInformation. - Система — описание ОС, архитектура, имя компьютера и число процессоров.
- Переменные среды
— шесть ключевых переменных, связанных с .NET ( , , , , и ), показывающие для любой, которая не настроена.
Директива
using System.Reflectionтребуется дляAssembly.GetEntryAssembly()иAssemblyInformationalVersionAttribute. Директиваusing System.Runtime.InteropServicesтребуется дляRuntimeInformation.-
Runtime — версия .NET, описание платформы и идентификатор среды выполнения с помощью
Сохраните ваши изменения.
Тестирование приложения
Запустите проект и просмотрите выходные данные:
dotnet run
Выходные данные выглядят примерно так:
dotnet-env v1.0.0
----------------------------------------
Runtime
.NET Version 10.0.4
Framework .NET 10.0.4
Runtime Identifier win-x64
System
OS Microsoft Windows 10.0.22631
Architecture X64
Machine Name MY-MACHINE
Processor Count 16
Environment Variables
DOTNET_ROOT (not set)
DOTNET_HOST_PATH (not set)
DOTNET_CLI_HOME (not set)
DOTNET_NOLOGO (not set)
NUGET_PACKAGES (not set)
DOTNET_ENVIRONMENT (not set)
Замечание
Отображаемые значения зависят от компьютера и .NET установки. Выходные данные зависят от платформы.
Упакуйте инструмент
Чтобы упаковать и распространить приложение в качестве средства, измените файл проекта.
Откройте файл dotnet-env.csproj и добавьте три новых XML-узла в конец
<PropertyGroup>узла:<PackAsTool>true</PackAsTool> <ToolCommandName>dotnet-env</ToolCommandName> <PackageOutputPath>./nupkg</PackageOutputPath><ToolCommandName>— необязательный элемент, указывающий команду, которая вызывает средство после установки. Если этот элемент не указан, имя команды для средства — это имя сборки, которое обычно является именем файла проекта без расширения CSPROJ .Замечание
Выберите уникальное значение для
<ToolCommandName>. Избегайте использования расширений файлов (например.exe, или.cmd) из-за того, что средство установлено в качестве узла приложения, и команда не должна включать расширение. Это помогает предотвратить конфликты с существующими командами и обеспечивает гладкую установку.<PackageOutputPath>— это необязательный элемент, определяющий, где .NET формирует пакет NuGet. .NET CLI использует пакет NuGet для установки средства.Теперь файл проекта выглядит следующим образом:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net10.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <PackAsTool>true</PackAsTool> <ToolCommandName>dotnet-env</ToolCommandName> <PackageOutputPath>./nupkg</PackageOutputPath> </PropertyGroup> </Project>Создайте пакет NuGet, выполнив команду dotnet pack :
dotnet packФайл dotnet-env.1.0.0.nupkg создается в папке, определяемой значением
<PackageOutputPath>из файла dotnet-env.csproj , который в этом примере — папка ./nupkg .Чтобы выпустить средство публично, отправьте его в
https://www.nuget.org. После того как средство будет доступно в NuGet, разработчики могут установить средство с помощью команды установки средства dotnet . В этом руководстве вы устанавливаете пакет непосредственно из локальной папки nupkg , поэтому нет необходимости отправлять пакет в NuGet.
Устранение неполадок
Если вы получите сообщение об ошибке при выполнении руководства, см. статью Устранение проблем с использованием средств .NET.
Дальнейшие шаги
В этом руководстве вы создали консольное приложение и упаковали его в качестве инструмента. Чтобы узнать, как использовать инструмент как универсальный инструмент, перейдите к следующему уроку.
Если вы предпочитаете, вы можете пропустить руководство по глобальным средствам и перейти непосредственно к руководству по локальным средствам.