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ął?