Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Artykuł dotyczy: ✔️ .NET 8 SDK i nowszych wersji
W tym samouczku pokazano, jak utworzyć i spakować narzędzie platformy .NET. Interfejs wiersza polecenia platformy .NET umożliwia utworzenie aplikacji konsolowej jako narzędzia, które inne osoby mogą instalować i uruchamiać. Narzędzia platformy .NET to pakiety NuGet instalowane z poziomu interfejsu wiersza polecenia platformy .NET. Aby uzyskać więcej informacji na temat narzędzi, zobacz Omówienie narzędzi platformy .NET.
Narzędzie, które utworzysz, to aplikacja konsolowa, która pobiera informacje o bieżącym środowisku .NET i wyświetla je, w tym wersję .NET, szczegóły systemu operacyjnego i kluczowe ustawienia zmiennej środowiskowej.
Ten samouczek tutaj jest pierwszym z serii trzech samouczków. W tym samouczku utworzysz i zapakujesz narzędzie. W dwóch następnych samouczkach użyjesz narzędzia jako narzędzia globalnego i użyjesz narzędzia jako narzędzia lokalnego. Procedury tworzenia narzędzia są takie same, niezależnie od tego, czy używasz go jako narzędzia globalnego, czy jako narzędzia lokalnego.
Wymagania wstępne
.NET SDK 10.0 lub nowszą.
Ten samouczek używa .NET SDK 10.0, ale ten przewodnik dotyczy wszystkich wersji .NET od wersji 8.0 wzwyż.
Wybrany edytor tekstu lub edytor kodu.
Tworzenie projektu
Otwórz wiersz polecenia i utwórz folder o nazwie repository.
Przejdź do folderu repozytorium i wprowadź następujące polecenie:
dotnet new console -n dotnet-envPolecenie tworzy nowy folder o nazwie dotnet-env w folderze repozytorium .
Przejdź do folderu dotnet-env .
cd dotnet-env
Dodawanie kodu
Otwórz plik Program.cs za pomocą edytora kodu.
Zastąp zawartość następującym kodem:
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)"}"); }Program używa instrukcji najwyższego poziomu do odczytywania wersji informacyjnej zestawu przy użyciu poleceń
Assembly.GetEntryAssembly()iAssemblyInformationalVersionAttribute, a następnie wyświetla nazwę aplikacji i wiersz separatora przed wyświetleniem trzech sekcji informacji:-
Runtime — wersja .NET, opis platformy i identyfikator środowiska uruchomieniowego przy użyciu
Environment.VersioniRuntimeInformation. - System — opis systemu operacyjnego, architektura, nazwa maszyny i liczba procesorów.
- Zmienne środowiskowe — sześć kluczowych zmiennych związanych z .NET (
DOTNET_ROOT,DOTNET_HOST_PATH,DOTNET_CLI_HOME,DOTNET_NOLOGO,NUGET_PACKAGESiDOTNET_ENVIRONMENT), pokazując(not set)dla którychkolwiek, które nie są skonfigurowane.
Dyrektywa
using System.Reflectionjest wymagana dlaAssembly.GetEntryAssembly()iAssemblyInformationalVersionAttribute.using System.Runtime.InteropServicesdyrektywa jest wymagana dlaRuntimeInformation.-
Runtime — wersja .NET, opis platformy i identyfikator środowiska uruchomieniowego przy użyciu
Zapisz zmiany.
Testowanie aplikacji
Uruchom projekt i wyświetl dane wyjściowe:
dotnet run
Dane wyjściowe wyglądają podobnie do następującego przykładu:
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)
Uwaga / Notatka
Wyświetlane wartości zależą od maszyny i .NET instalacji. Dane wyjściowe różnią się w zależności od platformy.
Spakuj narzędzie
Aby spakować i rozpowszechnić aplikację jako narzędzie, zmodyfikuj plik projektu.
Otwórz plik dotnet-env.csproj i dodaj trzy nowe węzły XML na końcu węzła
<PropertyGroup>:<PackAsTool>true</PackAsTool> <ToolCommandName>dotnet-env</ToolCommandName> <PackageOutputPath>./nupkg</PackageOutputPath><ToolCommandName>jest opcjonalnym elementem określającym polecenie, które wywołuje narzędzie po instalacji. Jeśli ten element nie jest podany, nazwa polecenia narzędzia to nazwa zestawu, która jest zazwyczaj nazwą pliku projektu bez rozszerzenia csproj .Uwaga / Notatka
Wybierz unikatową wartość dla elementu
<ToolCommandName>. Unikaj używania rozszerzeń plików (takich jak.exelub.cmd), ponieważ narzędzie jest zainstalowane jako host aplikacji, a polecenie nie powinno zawierać rozszerzenia. Pomaga to zapobiegać konfliktom z istniejącymi poleceniami i zapewnia bezproblemowe środowisko instalacji.<PackageOutputPath>jest opcjonalnym elementem określającym, gdzie .NET tworzy pakiet NuGet. Interfejs wiersza polecenia .NET używa pakietu NuGet do zainstalowania narzędzia.Plik projektu wygląda teraz jak w poniższym przykładzie:
<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>Utwórz pakiet NuGet, uruchamiając polecenie dotnet pack :
dotnet packPlik dotnet-env.1.0.0.nupkg jest tworzony w folderze zidentyfikowanym przez
<PackageOutputPath>wartość z pliku dotnet-env.csproj , który w tym przykładzie jest folderem ./nupkg .Aby opublikować narzędzie publicznie, prześlij je do
https://www.nuget.org. Gdy narzędzie będzie dostępne w narzędziu NuGet, deweloperzy mogą zainstalować narzędzie za pomocą polecenia dotnet tool install . Na potrzeby tego samouczka zainstalujesz pakiet bezpośrednio z lokalnego folderu nupkg , więc nie ma potrzeby przekazywania pakietu do pakietu NuGet.
Rozwiązywanie problemów
Jeśli podczas wykonywania samouczka zostanie wyświetlony komunikat o błędzie, zobacz Rozwiązywanie problemów z użyciem narzędzi platformy .NET.
Dalsze kroki
W tym samouczku utworzyłeś aplikację konsolową i spakowałeś ją jako narzędzie. Aby dowiedzieć się, jak używać narzędzia jako narzędzia globalnego, przejdź do następnego samouczka.
Jeśli wolisz, możesz pominąć samouczek dotyczący narzędzi globalnych i przejść bezpośrednio do samouczka narzędzi lokalnych.