image

Acesse bootcamps ilimitados e +650 cursos pra sempre

75
%OFF

DJ

Diogo JĂșnior11/11/2025 17:41
Compartilhe

🚀 Adeus Startup.cs! Como Corrigir o Erro “The type or namespace name 'Startup' could not be found”

    Bom dia, boa tarde ou boa noite a todos os devs que estĂŁo empenhados no bootcamp da Avanade, estou aqui mais uma vez trazendo um pouco da minha ajuda.

    Durante o desenvolvimento de um projeto de entrega baseado nas aulas de um professor da DIO, criado originalmente em .NET 7, me deparei com o seguinte erro ao tentar atualizar o cĂłdigo para .NET 9:

    The type or namespace name 'Startup' could not be found (are you missing a using directive or an assembly reference?)
    

    À primeira vista, parece apenas um erro de referĂȘncia comum...

    Mas na verdade, ele revela uma mudança estrutural profunda nas versÔes mais recentes do ASP.NET Core: o modelo Minimal API.

    Neste artigo, vocĂȘ vai entender:

    • 🧠 Por que esse erro acontece
    • ⚙ O que mudou do .NET 7 para o .NET 8 e 9
    • 🧰 Como corrigir o problema
    • đŸš« Por que o Startup.cs e o Setup.cs nĂŁo sĂŁo mais necessĂĄrios

    đŸ•č Contexto do erro

    O projeto original desenvolvido pelo professor na versĂŁo .NET 7 ainda seguia a estrutura tradicional com duas classes principais:

    • Program.cs — ponto de entrada da aplicação
    • Startup.cs — responsĂĄvel pela configuração de serviços e middlewares
    public class Program
    {
      public static void Main(string[] args)
          => CreateHostBuilder(args).Build().Run();
    
      public static IHostBuilder CreateHostBuilder(string[] args) =>
          Host.CreateDefaultBuilder(args)
              .ConfigureWebHostDefaults(webBuilder =>
              {
                  webBuilder.UseStartup<Startup>();
              });
    }
    

    E o Startup.cs continha as configuraçÔes centrais:

    public class Startup
    {
      public void ConfigureServices(IServiceCollection services)
      {
          // ConfiguraçÔes de injeção de dependĂȘncia
      }
    
      public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
      {
          // Pipeline de middlewares
      }
    }
    

    Essa estrutura ainda funcionava bem no .NET 7, mas foi completamente substituĂ­da a partir do .NET 8 e 9.

    ⚠ O que mudou do .NET 7 para o .NET 9

    Com a chegada do .NET 8 e consolidado no .NET 9, a Microsoft finalizou a transição para o modelo Minimal API.

    Agora, nĂŁo existe mais a necessidade (nem suporte oficial) ao arquivo Startup.cs.

    Tudo — serviços, middlewares e rotas — fica concentrado em um Ășnico arquivo: Program.cs.

    Exemplo moderno:

    var builder = WebApplication.CreateBuilder(args);
    
    builder.Services.AddEndpointsApiExplorer();
    builder.Services.AddSwaggerGen();
    
    var app = builder.Build();
    
    app.MapGet("/", () => "API rodando com sucesso 🚀");
    
    app.Run();
    

    No novo modelo, o Program.cs substitui o Startup.cs completamente.

    VocĂȘ nĂŁo precisa mais usar webBuilder.UseStartup<Startup>().

    🧠 Por que o erro acontece

    Quando vocĂȘ executa ou testa um projeto antigo (por exemplo, migrado de .NET 7 para .NET 9) e ele ainda contĂ©m:

    webBuilder.UseStartup<Startup>();
    

    ou nos testes:

    new WebApplicationFactory<Startup>()
    

    o compilador não encontrarå a classe Startup, pois ela foi removida do modelo padrão das novas versÔes.

    Resultado:

    ❌ The type or namespace name 'Startup' could not be found

    🔧 A solução moderna

    ✅ 1. Centralize tudo no Program.cs

    Remova o Startup.cs e coloque toda a configuração no Program.cs:

    var builder = WebApplication.CreateBuilder(args);
    
    // ConfiguraçÔes de serviços
    builder.Services.AddEndpointsApiExplorer();
    builder.Services.AddSwaggerGen();
    
    var app = builder.Build();
    
    // Middlewares
    app.UseSwagger();
    app.UseSwaggerUI();
    
    // Rotas
    app.MapGet("/", () => Results.Json(new { message = "API Ativa 🚀" }));
    
    app.Run();
    
    // NecessĂĄrio para testes
    public partial class Program { }
    

    Esse formato Ă© o padrĂŁo oficial do ASP.NET Core desde o .NET 6

    e Ă© totalmente compatĂ­vel com o .NET 9.

    đŸ§Ș 2. Atualize os testes de integração

    Antes (no .NET 7):

    Setup.http = new WebApplicationFactory<Startup>();
    

    Agora (no .NET 9):

    Setup.http = new WebApplicationFactory<Program>();
    

    Exemplo moderno de teste:

    [TestClass]
    public class ApiTests
    {
      private readonly WebApplicationFactory<Program> _factory;
    
      public ApiTests()
      {
          _factory = new WebApplicationFactory<Program>()
              .WithWebHostBuilder(builder =>
              {
                  builder.UseEnvironment("Testing");
              });
      }
    
      [TestMethod]
      public async Task Deve_Retornar_Status_200_No_Endpoint_Principal()
      {
          var client = _factory.CreateClient();
          var response = await client.GetAsync("/");
          Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
      }
    }
    

    🧰 3. Por que o Setup.cs nĂŁo Ă© mais necessĂĄrio

    Antigamente, muitos projetos criavam um Setup.cs para configurar o ambiente de teste com WebApplicationFactory<Startup>.

    Isso nĂŁo Ă© mais necessĂĄrio.

    O WebApplicationFactory<Program> jĂĄ:

    • Cria o servidor de teste em memĂłria
    • Gerencia o ciclo de vida da aplicação
    • Permite injetar serviços de teste com WithWebHostBuilder

    Ou seja: o Setup.cs se tornou redundante.

    🧭 Conclusão

    A transição do .NET 7 para o .NET 9 trouxe um modelo mais simples, direto e intuitivo.

    O antigo Startup.cs foi substituĂ­do por uma abordagem mais enxuta: tudo centralizado no Program.cs.

    Resumo prĂĄtico:

    • đŸš« Apague o Startup.cs
    • ✅ Concentre tudo no Program.cs
    • 🔄 Atualize testes para WebApplicationFactory<Program>
    • 💡 NĂŁo crie mais Setup.cs

    Com isso, vocĂȘ terĂĄ uma API moderna, compatĂ­vel e mais fĂĄcil de manter.

    💬 Em resumo

    💡 Se vocĂȘ encontrou o erro
    "The type or namespace name 'Startup' could not be found",
    Ă© porque estĂĄ rodando um cĂłdigo antigo (geralmente .NET 7)
    em uma versĂŁo moderna (.NET 8 ou .NET 9).
    A solução? Abandone o Startup.cs.
    O Program.cs agora Ă© o coração da aplicação ASP.NET Core. ⚙

    đŸ’» CĂłdigo completo de exemplo

    👉 Repositório oficial de exemplos Minimal API no GitHub

    🏁 Finalizando

    Essa transição pode parecer confusa no início, mas é uma evolução natural do ecossistema .NET.

    Agora o desenvolvimento é mais råpido, a inicialização mais leve e o código mais limpo.

    O Startup.cs teve seu tempo.

    Hoje, o Program.cs Ă© o novo centro da aplicação ASP.NET Core. 🚀

    Compartilhe
    Recomendados para vocĂȘ
    CAIXA - InteligĂȘncia Artificial na PrĂĄtica
    Binance - Blockchain Developer with Solidity 2025
    Neo4J - AnĂĄlise de Dados com Grafos
    ComentĂĄrios (0)