Miałem już dać sobie na krótki okres czasu z pisaniem o dotenet core ale ten jeden raz… ostatni, obiecuje :) Dziś o tym co mnie trochę… zdziwiło i wzbudziło konsternacje na twarzy. A nawet przez to przeinstalowałem cały dotnet core… dwukrotnie… i dopiero przypadek sprawił, że zajarzyłem o co chodzi.
Mianowicie wszystko rozbija się o komendę dotnet
albo jedną z jej pod komend – new
. Na przykład stwórzmy sobie aplikacje konsolową:
dotnet new console -n GutTest
I wpiszmy zaraz po tym komendę:
dotnet new --help
W zależności od tego co mamy zainstalowane dostaniemy coś na kształt (wiem, długi output)
> dotnet new --help Template Instantiation Commands for .NET Core CLI. Usage: dotnet new [arguments] [options] Arguments: template The template to instantiate. Options: -l|--list List templates containing the specified name. -lang|--language Specifies the language of the template to create -n|--name The name for the output being created. If no name is specified, the name of the current directory is used. -o|--output Location to place the generated output. -h| --help Displays help for this command. -all|--show-all Shows all templates Templates Short Name Language Tags ------------------------------------------------------------------------------------------------------ Lambda Detect Image Labels lambda.DetectImageLabels [C#] AWS/Lambda/Function Lambda Empty Function lambda.EmptyFunction [C#] AWS/Lambda/Function Lambda Simple DynamoDB Function lambda.DynamoDB [C#] AWS/Lambda/Function Lambda Simple Kinesis Function lambda.Kinesis [C#] AWS/Lambda/Function Lambda Simple S3 Function lambda.S3 [C#] AWS/Lambda/Function Lambda ASP.NET Core Web API lambda.AspNetCoreWebAPI [C#] AWS/Lambda/Serverless Lambda DynamoDB Blog API lambda.DynamoDBBlogAPI [C#] AWS/Lambda/Serverless Lambda Empty Serverless lambda.EmptyServerless [C#] AWS/Lambda/Serverless Console Application console [C#], F# Common/Console Class library classlib [C#], F# Common/Library Unit Test Project mstest [C#], F# Test/MSTest xUnit Test Project xunit [C#], F# Test/xUnit ASP.NET Core Empty web [C#] Web/Empty ASP.NET Core Web App mvc [C#], F# Web/MVC ASP.NET Core Web API webapi [C#] Web/WebAPI Solution File sln Solution Examples: dotnet new mvc --auth None --framework netcoreapp1.1 dotnet new lambda.S3 --profile --region dotnet new --help
I ok. Teraz wejdźmy do GutTest
:
cd GutTest
I odpalmy tą samą komendę co przed chwilą:
GutTest> dotnet new --help Template Instantiation Commands for .NET Core CLI. Usage: dotnet new [arguments] [options] Arguments: template The template to instantiate. Options: -l|--list List templates containing the specified name. -lang|--language Specifies the language of the template to create -n|--name The name for the output being created. If no name is specified, the name of the current directory is used. -o|--output Location to place the generated output. -h|--help Displays help for this command. -all|--show-all Shows all templates Templates Short Name Language Tags ---------------------------------------------------------- Nuget Config nugetconfig Config Web Config webconfig Config Solution File sln Solution Examples: dotnet new nugetconfig dotnet new sln dotnet new --help
EJ co się stało? Nie ma naszych szablonów? To nie ma. Jak się okazuje komenda jest kontekstowa. Szkoda, że o tym nie informuje lub nie mówi, że właśnie działa w kontekście projektu. Byłoby znacznie łatwiej.
Nie to, że to jest zarzucenie, że coś nie tak i czepianie się. Byłem w projekcie, dodawałem nowy typ projektów do dotnet new
(AWS Lambda) i go nie miałem. Nie działał mi. Czyli coś jest nie tak. Więc zrobiłem to co mówi pomoc -all
i wtedy otrzymałem wynik który powiedział mi, że są moje szablony. Dopiero też wtedy przyszło mi do głowy, że to działa kontekstowo.
Moim zdaniem, skoro już to wiedzą, to mogą napisać, że NEW działa w kontekście aktualnego folderu. Zresztą… jest to idealny case do PR :) Tylko uporam się z pluginami do offica i pewnie się za to zabiorę.
Ktoś z was się też na to naciął?