Pular para o conteúdo
.NETEstrutura do .csproj (SDK-style)
Módulo 01Fundamentos da Plataforma e da Linguagem

Estrutura do .csproj (SDK-style)

iniciante 20 min de leitura·Atualizado · .NET 9
Resumo

O .csproj é o arquivo de projeto (MSBuild). No formato SDK-style ele é curtíssimo: declara o SDK, o alvo (TargetFramework) e algumas propriedades. Os arquivos .cs são incluídos automaticamente.

1. Objetivos de Aprendizagem#

  • Ler e entender um .csproj SDK-style.
  • Conhecer propriedades comuns (TargetFramework, Nullable, ImplicitUsings).
  • Saber onde entram pacotes e referências.

2. Pré-requisitos#

  • Ter criado um projeto com a CLI (tópico 1.3).

3. Conceito#

O .csproj descreve como o projeto é compilado. No formato antigo ele listava cada arquivo; no SDK-style (o padrão atual) tudo é convenção: qualquer .cs na pasta entra automaticamente. O porquê: menos ruído, menos conflitos de merge, mais foco no código.

Elementos principais:

  • Sdk="Microsoft.NET.Sdk" — o tipo de projeto (Web usa Microsoft.NET.Sdk.Web).
  • <TargetFramework> — o TFM alvo (net9.0).
  • <PropertyGroup> — propriedades de build.
  • <ItemGroup> — pacotes (PackageReference) e referências (ProjectReference).

4. Mão na Massa#

4.1. Setup#

Shell
dotnet new classlib -n Catalog.Domain

4.2. Implementação Passo a Passo#

  1. Abra o .csproj gerado:
XML
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net9.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

</Project>
  1. Entenda cada propriedade:
  • ImplicitUsings=enable — adiciona using globais comuns (System, System.Collections.Generic…) sem você declarar.
  • Nullable=enable — liga os nullable reference types (avisos de possível null).
  1. Adicione um pacote e veja o ItemGroup surgir:
Shell
dotnet add package Microsoft.Extensions.Logging.Abstractions
XML
  <ItemGroup>
    <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.0" />
  </ItemGroup>

4.3. Executando#

Shell
dotnet build

5. Exemplo Completo#

Um .csproj de biblioteca com net9.0, Nullable e ImplicitUsings habilitados, mais um PackageReference, já representa a configuração típica de um projeto moderno.

6. Boas Práticas e Armadilhas#

FaçaEvite
Manter Nullable e ImplicitUsings habilitadosListar arquivos .cs manualmente (formato legado)
Deixar a CLI editar o ItemGroupDigitar versões de pacote à mão com erros de digitação
Atenção

o .csproj é XML sensível. Uma tag mal fechada quebra o build inteiro com mensagens pouco óbvias.

7. Segurança e Produção#

  • Propriedades como <TreatWarningsAsErrors>true</TreatWarningsAsErrors> ajudam a barrar código problemático antes do deploy.

8. Exercícios#

  • Fácil: identifique o TargetFramework de um projeto seu.
  • Médio: habilite TreatWarningsAsErrors e observe o efeito.
  • Desafio: pesquise o que faz <LangVersion> e defina-a explicitamente.

9. Resumo#

O .csproj SDK-style é enxuto: SDK + TargetFramework + propriedades; arquivos .cs entram por convenção, e pacotes/referências ficam em ItemGroup.

10. Próximos Passos#

A seguir, organizar múltiplos projetos em uma solution.

11. Referências#

02-01 — Estrutura do .csproj (SDK-style) | Curso ASP.NET Core