-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Welcome to the loja-do-valdir wiki!
A CLI (Interface de Linha de Comando | Command Line Interface), é uma ferramenta central desenvolvida para ser utilizada no terminal ou prompt de comando de sistemas operacionais, sendo compatível com Windows, Linux e MacOS.
Faz parte do ambiente de desenvolvimento .NET e oferece uma interface versátil para executar uma variedade de tarefas, tais como:
- Compilação: transforma código-fonte em um executável (arquivo que contém um programa pronto para ser executado/rodado) ou biblioteca que pode ser executada em um ambiente .NET;
- Execução: roda aplicativos e testes diretamente no terminal;
- Depuração: identifica e corrige problemas no código;
- Gerenciamento de pacotes: instala, atualiza e remove pacotes NuGet (gerenciador de pacotes), que são bibliotecas de código reutilizáveis;
- Publicação: prepara e implanta aplicativos para distribuição;
- Geração de Código: cria novos projetos e arquivos de código-fonte;
- Testes: executa testes automatizados para verificar a qualidade do código;
- Gerenciamento de Versão: trabalha com diferentes versões do .NET SDK (conjunto de ferramentas) e runtimes (ambiente de execução).
Em resumo, é uma ferramente essencial para simplificar e automatizar o processo de desenvolvimento de software na plataforma .NET, oferecendo uma maneira eficiente de gerenciar e executar tarefas comuns através da linha de comando.
Como mencionado anteriormente, a CLI é utilizada principalmente por desenvolvedores afim de realizar tarefas relacionadas a construção de apps e bibliotecas. Isso inclui:
- Criação de Projetos: seja para aplicativos, bibliotecas de classe ou projetos de testes, a CLI simplifica o processo com comandos simples, permitindo até mesmo especificar o projeto desejado, a linguagem (C#, F#,etc), o nome e outros parâmetros relevantes;
- Compilação e Execução: útil para testar o código durante o processo de desenvolvimento ou executar scripts automatizados;
- Gerenciamento de Pacotes: o NuGet, integrado à CLI do .NET, facilita o gerenciamento de pacotes em projetos. Desenvolvedores podem instalar, atualizar e remover pacotes diretamente do terminal;
- Testes Automatizados: a CLI descomplexifica a execução de testes automatizados usando frameworks como xUnit, NUnit ou MSTest, autorizando a execução de testes unitários, de integração ou aceitação pela linha de comando;
- Publicação de Aplicativos: após concluir o desenvolvimento, os devs podem utilizar a CLI para publicar o app, preparando-o para implantação em produção, incluindo compilação, empacotamento de recursos e criação de artefatos de distribuição;
- Implantação de Ambientes em Produção: por fim, a CLI pode ser usada também para implantar aplicativos em ambientes de produção, seja em servidores locais, na nuvem ou em contêineres, automatizando o processo de implantação ou ferramentas de integração/entrega contínua (CI/CD — Integração Contínua - Continuous Integration | Entrega Contínua/Implantação Contínua - Continuous Delivery/Continuous Deployment).
A CLI do .NET segue uma abordagem modular e hierárquica — padrão —, onde comandos principais são usados para realizar tarefas de alto nível, e esses comandos podem ser seguidos por subcomandos e argumentos para executar tarefas mais específicas. Nesta seção, está listada os comandos mais comuns e utilizados, além de seus argumentos correspondentes.
É utilizado como ponto inicial, sendo assim, criando novos projetos e arquivos de código-fonte.
dotnet new <TEMPLATE> [-n <NAME>] [-o <OUTPUT>] [--force]
- Neste primeiro exemplo de estrutura, no lugar do template pode-se substituir por um modelo como
console
,classlib
,wpf
ou qualquer outro argumento que desejar criar; -
-n
argumento para nomear o arquivo; -
-o
nomeia diretório/pasta; -
force
é opcional, sendo utilizado em casos que se necessite que "force" o computador a executar a tarefa, mesmo que haja um impedimento prévio.
ou
dotnet new <TEMPLATE> [-o <OUTPUT> ] [--force]
- Seguindo a lógica do primeiro exemplo, a única diferença se faz presente dentro do caso de não especificar o nome do projeto, logo, o arquivo assumirá o nome do diretório criado.
exemplos
COMANDO | SUBCOMANDO | EXECUÇÃO |
---|---|---|
dotnet | new console | Cria aplicação console C#. |
dotnet | new mvc -au None | Cria projeto MVC no diretório atual sem autenticação. |
dotnet | new --install | Instala novos templates. |
dotnet | new --help | Lista templates personalizados disponíveis. |
obs: a partir do sdk do .net 7, a sintaxe do dotnet new foi alterada. Para cada subcomando — operações especificas que podem ser realizadas dentro do contexto do comando principal, neste caso o dotnet new — utilize a opção -h ou --help: dotnet new --help, assim listando todas as opções com suporte para o subcomando.
antes do SDK .NET 6.0.100 | a partir do SDK .NET 6.0.100 |
---|---|
dotnet new spa --list | dotnet new list |
dotnet new --search | dotnet new search |
dotnet new --install | dotnet new install |
dotnet new --uninstall | dotnet new uninstall |
dotnet new --update-apply | dotnet new update |
dotnet new --update-check | dotnet new update --check-only |
Um projeto do .NET normalmente faz referências a bibliotecas externas em pacotes NuGet que fornecem funcionalidade adicional. Essas dependências externas são referenciadas no arquivo de projeto .csproj
ou .vbproj
.
dotnet restore <ARGUMENTO> <ARQUIVO/PASTA>
- O comando segue a estrutura básica de um comando CLI, onde se tem o nome do comando seguido de quaisquer argumentos e opcionalmente o arquivo ou pasta alvo;
- Ao executar o comando, a interface utiliza o NuGet procura e se necessário, baixa as dependências no arquivo de projeto, garantindo que todas as bibliotecas necessárias estejam disponíveis localmente para compilação e execução do projeto. Ele também garante que sejam compatíveis entre si e que não haja conflitos entre elas.
exemplos
COMANDO | SUBCOMANDO | EXECUÇÃO |
---|---|---|
dotnet restore | [<ROOT>] |
Especifica o diretório raiz a partir do qual as dependências devem ser restauradas. Por padrão, o diretório atual é usado como raiz. |
dotnet restore | --configfile | Especifica um arquivo de configuração do NuGet para ser usado durante a restauração, o que pode ser útil para configurar repositórios de pacotes personalizados ou autenticação. |
dotnet restore | --disable-build-servers | Desabilita a utilização de servidores de compilação remotos durante a restauração. |
dotnet restore | --disable-parallel | Desabilita a restauração paralela de pacotes. |
dotnet restore | -f ou --force | Força a restauração de dependências, mesmo que elas já estejam presentes localmente ou sejam consideradas desnecessárias. Pode vir a ser útil em casos onde queira garantir que todas as dependências sejam/foram atualizadas. |
dotnet restore | -force-evaluate | Força a reavaliação dos arquivos de projeto durante a restauração. |
dotnet restore | --ignore-failed-sources | Ignora fontes de pacotes que falharam ao tentar serem restauradas. |
dotnet restore | --interactive | Permite a interação do usuário durante a restauração, se necessário. |
dotnet restore | --lock-file-path <LOCK_FILE_PATH> | Especifica o caminho para o arquivo de bloqueio a ser usado durante a restauração. |
dotnet restore | --locked-mode | Habilita o modo de bloqueio, onde as versões dos pacotes são fixadas no arquivo de bloqueio. |
dotnet restore | --no-cache | Desabilita o uso do cache de pacotes durante a restauração, forçando o NuGet a baixar todas as dependências novamente. Isso pode ser útil se estiver enfrentando problemas relacionados ao cache ou se quiser garantir que esteja obtendo as versões mais recentes dos pacotes. |
dotnet restore | --no-dependencies | Restaura apenas o projeto especificado, ignorando suas dependências. |
dotnet restore | --packages <PACKAGES_DIRECTORY> | Especifica o diretório onde os pacotes restaurados serão armazenados. |
dotnet restore | -s ou --source | especifica os locais onde o NuGet deve procurar por pacotes. Este argumento pode ser usado para adicionar os repositórios NuGet adicionais para pesquisa de pacotes. |
dotnet restore | --use-lock-file | Usa um arquivo de bloqueio existente durante a restauração. |
dotnet restore | -v ou --verbosity | Especifica o nível de verbosidade da saída durante a restauração. |
O comando dotnet build
compila o projeto e suas dependências em um conjunto de binários, estes que incluem o código do projeto em arquivos de Linguagem Intermediária (IL - Intermediate Language) com extensão .dill
. Dependendo do tipo de projeto e das configurações, outros arquivos podem ser gerados:
- Um executável, caso o projeto seja um app executável direcionado ao .NET Core 3.0 ou posterior;
- Arquivos de símbolos
.pdb
(Program Database) para depuração; - Um arquivo
.deps.json
ou.runtimeconfig.json
especificando o tempo de execução compartilhado e sua versão em um aplicativo; - Outras bibliotecas das quais o projeto depender, por meio de referências de projeto ou do NuGet.
Para projetos executáveis direcionados a versões anteriores ao .NET Core 3.0, as dependências de biblioteca do NuGet normalmente não são copiadas para a pasta de saída. Elas são resolvidas da pasta de pacotes globais do NuGet em tempo de execução. Nesse caso, o produto de
dotnet build
não está pronto para ser transferido para outro computador para execução. Para criar uma versão do aplicativo que possa ser implantada, você precisa publicá-lo (por exemplo, com o comandodotnet publish
).
Já para projetos executáveis direcionados ao .NET Core 3.0 e posteriores, as dependências da biblioteca são copiadas para a pasta de saída. Isso significa que, se não houver nenhuma outra lógica específica de publicação (como projetos Web), a saída de compilação será implantável, ou seja, prontos para serem distribuídos e executados em um ambiente de produção, sem necessidade de etapas adicionais de configuração ou preparação.
dotnet build <ARGUMENTO>
-
--configuration
especifica a configuração de compilação a ser utilizada, como "Debug" ou "Release". -
--framework
Especifica o framework de destino para o qual o projeto deve ser compilado. -
--output
Especifica o diretório de saída para os arquivos compilados. -
--no-incremental
Desativa a compilação incremental, forçando uma recompilação completa do projeto. -
--no-dependencies
Compila apenas o projeto especificado, ignorando suas dependências. -
--verbosity
Especifica o nível de detalhamento da saída durante a compilação.