<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Posts on Carlos dos Santos</title>
    <link>https://carloscds.net/</link>
    <description>Recent content in Posts on Carlos dos Santos</description>
    <generator>Hugo -- gohugo.io</generator>
    <lastBuildDate>Tue, 21 Jul 2026 00:00:00 +0000</lastBuildDate>
    
        <atom:link href="https://carloscds.net/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>.NET 11 RC 1: como começar a testar sua aplicação</title>
      <link>https://carloscds.net/2026/10/dotnet11rc1/</link>
      <pubDate>Mon, 05 Oct 2026 00:00:00 +0000</pubDate>
      
      <guid>https://carloscds.net/2026/10/dotnet11rc1/</guid>
      <description>O .NET 11 chegou ao Release Candidate 1! No post sobre o Preview 6, vimos algumas novidades da plataforma. Agora vamos preparar um ambiente para testar uma API e organizar a avaliação de uma aplicação que você já tem.
O que muda com o RC 1? Segundo o anúncio oficial da Microsoft, esta versão tem licença de suporte go-live, permitindo seu uso em aplicações de produção com suporte. Ela continua sendo uma candidata a lançamento; isso não elimina a necessidade de validar suas dependências e os fluxos da aplicação.</description>
    </item>
    
    <item>
      <title>Analisando falhas de build com Copilot direto no VS Code (MSBuild Binlog)</title>
      <link>https://carloscds.net/2026/08/analisandobuildscomcopilotvscode/</link>
      <pubDate>Mon, 31 Aug 2026 00:00:00 +0000</pubDate>
      
      <guid>https://carloscds.net/2026/08/analisandobuildscomcopilotvscode/</guid>
      <description>Quem nunca ficou preso olhando um log de build gigante do MSBuild tentando entender por que um projeto quebrou? Pois a Microsoft lançou uma extensão para o VS Code, ainda em Preview, que coloca o Copilot para fazer esse trabalho de detetive por você: o MSBuild Binlog Analyzer.
O problema que ela resolve O .binlog (Binary Log) do MSBuild guarda tudo que aconteceu durante o build: cada target executado, cada task, tempos, erros e warnings.</description>
    </item>
    
    <item>
      <title>Novidades do .NET 11 Preview 6 para quem já usa .NET 10 em produção</title>
      <link>https://carloscds.net/2026/08/dotnet11preview6novidades/</link>
      <pubDate>Sun, 16 Aug 2026 00:00:00 +0000</pubDate>
      
      <guid>https://carloscds.net/2026/08/dotnet11preview6novidades/</guid>
      <description>Mais uma Preview do .NET saiu do forno! Se você lembra do post sobre o ShortCircuit em Middlewares, aquele recurso já tinha chegado justamente nesta versão, a Preview 6. Agora vamos dar uma olhada geral no que mais veio junto, com foco no que interessa para quem trabalha com ASP.NET Core e Entity Framework Core no dia a dia.
Runtime e Performance O runtime ganhou melhorias no desempenho de código assíncrono, otimizações no JIT, um registro de erros mais detalhado melhorias significativas para quem publica com NativeAOT.</description>
    </item>
    
    <item>
      <title>.NET 8 e 9 chegam ao fim do suporte: como planejar a migração para o .NET 10</title>
      <link>https://carloscds.net/2026/08/fimdosuportedotnet8e9/</link>
      <pubDate>Mon, 03 Aug 2026 00:00:00 +0000</pubDate>
      
      <guid>https://carloscds.net/2026/08/fimdosuportedotnet8e9/</guid>
      <description>Você sabia que o .NET 8 e o .NET 9 vão parar de receber atualizações de segurança no dia 10 de novembro de 2026 ? Pois é, a Microsoft já confirmou o fim do suporte para as duas versões, e se você ainda tem aplicações rodando nelas, já passou da hora de começar a planejar a migração.
Por que isto importa ? O .NET 8 é uma versão LTS (Long Term Support), então normalmente teria suporte por 3 anos.</description>
    </item>
    
    <item>
      <title>Carlos dos Santos</title>
      <link>https://carloscds.net/about/</link>
      <pubDate>Tue, 21 Jul 2026 00:00:00 +0000</pubDate>
      
      <guid>https://carloscds.net/about/</guid>
      <description>Tenho mais de 20 anos de experiência no desenvolvimento de softwares. Sou certificado Microsoft MCP, Microsoft MVP C#. Sou palestrante em diversos eventos Microsoft, tenho diversos artigos publicados em revistas e participo dos fóruns do MSDN.
Ministro treinamentos e consultorias in-company para evolução tecnológica de aplicações, melhora de performance e Cloud.
As opiniões colocadas neste blog são minhas e pessoais e não expressam necessariamente as opiniões de meus empregadores, parceiros e amigos.</description>
    </item>
    
    <item>
      <title>ShortCircuit: Pulando o pipeline de Middlewares no ASP.NET Core</title>
      <link>https://carloscds.net/2026/07/shortcircuitaspnet/</link>
      <pubDate>Tue, 21 Jul 2026 00:00:00 +0000</pubDate>
      
      <guid>https://carloscds.net/2026/07/shortcircuitaspnet/</guid>
      <description>Você já parou para pensar em quantos Middlewares são executados antes da sua Controller responder um simples &amp;ldquo;OK&amp;rdquo; ? Autenticação, CORS, Roteamento, Rate Limiting, Logging&amp;hellip; e às vezes o seu endpoint nem precisa de nada disso!
Pensando nisso, o ASP.NET Core adicionou um novo atributo chamado [ShortCircuit], que faz o endpoint ser executado logo após o Roteamento, &amp;ldquo;pulando&amp;rdquo; todo o restante do pipeline de Middlewares.
Mas isto não é novidade ?</description>
    </item>
    
    <item>
      <title>Migrei um projeto de ASP.NET Core usando o GitHub Copilot</title>
      <link>https://carloscds.net/2026/04/migreiumprojetocomcopilot/</link>
      <pubDate>Mon, 27 Apr 2026 00:00:00 +0000</pubDate>
      
      <guid>https://carloscds.net/2026/04/migreiumprojetocomcopilot/</guid>
      <description>Pode parecer facil migrar um projeto não é ? Só trocar as referências no csproj e rodar uns updates no nuget, e pronto!
Façil falar, mais difícil e complexo fazer!
Cenário Temos um projeto na empresa que precisa gerar um QRCode para PIX, e para isto usamos um componente para &amp;ldquo;desenhar&amp;rdquo; o QRCode. Parece simples, até você tentar rodar isto em um container usando Linux Alpine.
Não é tão simples assim, primeiro que o Linux Alpine é extremamente enxuto e depois de algum tempo você chega a conclusão que instalar libgdiplus nele pode ser um pouco mais trabalhoso do que parece.</description>
    </item>
    
    <item>
      <title>Tratando a resiliência em chamadas HTTP</title>
      <link>https://carloscds.net/2026/02/http-resilience/</link>
      <pubDate>Thu, 12 Feb 2026 00:00:00 +0000</pubDate>
      
      <guid>https://carloscds.net/2026/02/http-resilience/</guid>
      <description>O que é ser resiliente ? E uma aplicação resiliente ?
Ser resiliente é saber lidar com adversidades, adaptar-se a mudancas e lidar com pressões. Mas e uma aplicação resiliente ? Basicamente é a mesma coisa, saber contornar problemas que não estão ao seu alcance, tratar erros e sobrecargas.
No cenário de aplicações web, vamos explorar um recurso que nem é tão novo assim, mas que ganhou uma nova &amp;ldquo;roupagem&amp;rdquo; nas últimas versões do .</description>
    </item>
    
    <item>
      <title>Melhorando a organização do seu projeto - Exemplo básico de arquitetura</title>
      <link>https://carloscds.net/2026/01/melhorandoorganizacaoprojeto/</link>
      <pubDate>Tue, 13 Jan 2026 00:00:00 +0000</pubDate>
      
      <guid>https://carloscds.net/2026/01/melhorandoorganizacaoprojeto/</guid>
      <description>Como você tem organizado seus projetos, dependências e o código em geral ? Está separando tudo por projeto, isolando dependências e responsabilidades ?
Se não está, veja aqui um jeito simples e eficaz de organizar seu código e deixar os projetos mais claros!
Vamos considerar este projeto como exemplo:
É exemplo bem interessante de uma arquitetura Clean, com alguns projetos:
 APIComIoC.API - API básica (CRUD) APIComIoC.Core - Serviços Core (podemos considerar aqui a regra do negócio) APIComIoC.</description>
    </item>
    
    <item>
      <title>EFCore.Visualizer - veja a sua query produzida pelo EF Core</title>
      <link>https://carloscds.net/2025/09/efcore-queryview/</link>
      <pubDate>Mon, 01 Sep 2025 00:00:00 +0000</pubDate>
      
      <guid>https://carloscds.net/2025/09/efcore-queryview/</guid>
      <description>Você ja precisou ver como a consulta do EntityFramework Core é traduzida para o banco de dados ? Já teve aquela sensação de &amp;ldquo;será que a query ficou boa?&amp;rdquo;
Isto é um grande dilema para quem usa algum tipo de ORM, certo ? Você manipula classes e não tem muito controle sobre as queries que vão para o banco. Logicamente que você pode ativar algum tipo de LOG, mostrar na console, etc.</description>
    </item>
    
    <item>
      <title>ASP.NET Worker - Criando jobs dentro da sua aplicação</title>
      <link>https://carloscds.net/2025/06/aspnet-worker/</link>
      <pubDate>Tue, 03 Jun 2025 00:00:00 +0000</pubDate>
      
      <guid>https://carloscds.net/2025/06/aspnet-worker/</guid>
      <description>Vamos começar este artigo explicando o que é um &amp;ldquo;job&amp;rdquo;. Um job é um serviço que vai rodar de forma autônoma na nossa aplicação, sem a interferência de nenhuma chamada ou usuário, apenas respeitando uma regra básica, que pode ser um timer, um loop, etc.
Então podemos criar em uma aplicação ASP.NET, um código que é sempre executado em um determinado tempo, com um timer, e o melhor, este mecanismo é nativo da plataforma, não precisamos instalar nenhum pacote adicional.</description>
    </item>
    
    <item>
      <title>EF Migrations - Como rodar os updates se eu não tenho acesso direto ao banco ?</title>
      <link>https://carloscds.net/2025/01/ef-migrations-rodando-em-um-banco-sem-acesso-direto/</link>
      <pubDate>Mon, 20 Jan 2025 00:00:00 +0000</pubDate>
      
      <guid>https://carloscds.net/2025/01/ef-migrations-rodando-em-um-banco-sem-acesso-direto/</guid>
      <description>Se você já trabalhou em um projeto onde existe um DBA então o título deste post é muito familiar para você, pois o DBA jamais vai deixar você rodar qualquer tipo de &amp;lsquo;coisa&amp;rsquo; no banco de produção. Em um ambiente bem controlado, mesmo sem a presença de um DBA, isto também é uma EXCELENTE prática, afinal deixar o DEV rodar qualquer tipo de coisa no banco de produção pode ser um tanto perigoso!</description>
    </item>
    
    <item>
      <title>Visual Studio CodeSearch - Ficou muito bom!</title>
      <link>https://carloscds.net/2024/12/visualstudio-codesearch/</link>
      <pubDate>Tue, 10 Dec 2024 00:00:00 +0000</pubDate>
      
      <guid>https://carloscds.net/2024/12/visualstudio-codesearch/</guid>
      <description>Se você já está usando o Visual Studio 2022 ou 2022 Preview, pode usar este novo recurso que encontra qualquer coisa no seu código! Se você ainda não usa, baixe agora mesmo uma das versões do Visual Studio 2022.
Esta é uma dica simples, mas que pode te animar a usar o Visual Studio 2022.
Busca no código ? Se você já usa Visual Studio há agum tempo deve estar acostumado a usar o Find in Files certo ?</description>
    </item>
    
    <item>
      <title>.NET 9 agora suporta o OpenAPI nativamente</title>
      <link>https://carloscds.net/2024/11/openapi-support/</link>
      <pubDate>Mon, 25 Nov 2024 00:00:00 +0000</pubDate>
      
      <guid>https://carloscds.net/2024/11/openapi-support/</guid>
      <description>Na última semana foi lançado o .NET 9 durante o .NET Conf 2024 e com ele muitas e muitas novidades na plataforma que renderiam facilmente diversos posts, mas dentre os muitos recursos anunciados, hoje vamos falar sobre documentação de APIs e suporte a Open API.
Mas o que é o OpenAPI ? É um padrão aberto para documentação de APIs, e é claro que você, como um bom desenvolvedor, quer documentar muito bem a sua API.</description>
    </item>
    
    <item>
      <title>Conheça o Global Error Handler - Novo Recurso do ASP.NET 8.0</title>
      <link>https://carloscds.net/2024/10/tratamento-erros-global-error-handler/</link>
      <pubDate>Mon, 28 Oct 2024 00:00:00 +0000</pubDate>
      
      <guid>https://carloscds.net/2024/10/tratamento-erros-global-error-handler/</guid>
      <description>No último artigo falamos de tratamento de exceções usando um Middeware, que é um recurso muito útil e versátil.
Agora no .NET 8 temos um recurso mais simples e poderoso chamado Global Error Handler, que faz basicamente o que o Middleware de Exception do nosso último artigo, só que de maneira um tanto mais simples e eficiente.
Como usar o Global Error Handler Existe muita maneiras de usar o recurso, mas basicamente você implementa uma classe que herda da interface IExceptionHandler :</description>
    </item>
    
    <item>
      <title>Você está tratando corretamente os erros na sua aplicação ?</title>
      <link>https://carloscds.net/2024/07/tratamento-erros-inner-exception/</link>
      <pubDate>Thu, 25 Jul 2024 00:00:00 +0000</pubDate>
      
      <guid>https://carloscds.net/2024/07/tratamento-erros-inner-exception/</guid>
      <description>Aplicações apresentam erros, isto é um fato inegável. Por mais que você teste, automatize, verifique, em algum momento algum código poderá causar um erro na sua aplicação!
A partir daí como você pega e trata este erro é o que vai indicar quando e como você poderá resolver o problema.
Como assim tratar corretamente o erro ? É muito comum em aplicações estes tipos de abordagem:
try{// algum código}catch (Exception ex){} Sim, você nao está vendo errado, o bloco exception nao tem nada!</description>
    </item>
    
    <item>
      <title>Swagger vai acabar e agora ? Vamos conhecer o Scalar</title>
      <link>https://carloscds.net/2024/06/aspnetcore-swagger-scalar/</link>
      <pubDate>Sun, 02 Jun 2024 00:00:00 +0000</pubDate>
      
      <guid>https://carloscds.net/2024/06/aspnetcore-swagger-scalar/</guid>
      <description>Criar uma boa doumentação para uma API é essencial para quem vai consumir os serviços, pois ajuda no uso, reduz chamados de suporte e mais que tudo,mostra que você é um desenvolver organizado!
É extremanemte desagradável, e digo isto pois trabalho com muitas APIs diariamente, trabalhar com documentações desatualizadas e incorretas!
Se você e lembra, desde o .NET 5.0, o Swagger vem sendo utilizado amplamente em milhares de APIs, visto que seu uso é bastante simples e o resultado é muito bom, pois cria uma excelente documentação para nossas APIs.</description>
    </item>
    
    <item>
      <title>ASP.NET (Core) KeyedServices - uma interface, várias implementações</title>
      <link>https://carloscds.net/2024/05/aspnetcore-keyedservices/</link>
      <pubDate>Thu, 09 May 2024 00:00:00 +0000</pubDate>
      
      <guid>https://carloscds.net/2024/05/aspnetcore-keyedservices/</guid>
      <description>Recentemente tive que fazer uma mudança em um projeto ASP.NET que envolvia usar repositório para acesso ao Azure Storage. Este projeto ja tinha uma storage funcionando, mas o cliente precisava usar uma segunda storage para um endpoint específico na aplicação. Ok, nada que um IF não resolva certo ?
Não gosto muito deste tipo de solução, então verifiquei a documentação do ASP.NET 8 e temos um novo recurso chamado KeyedServices.</description>
    </item>
    
    <item>
      <title>EntityFramework - SQL Raw Queries</title>
      <link>https://carloscds.net/2023/11/entityframeworkcore-sqlraw/</link>
      <pubDate>Tue, 28 Nov 2023 00:00:00 +0000</pubDate>
      
      <guid>https://carloscds.net/2023/11/entityframeworkcore-sqlraw/</guid>
      <description>Recentemente foi lancado o EF 8, juntamente com o .NET 8 e com ele muitas novidades! Mas dentre todas, uma que &amp;lsquo;volta&amp;rsquo;, sim, ela já existiu no passado, é o uso de queries diretas sem uso do contexto, também conhecidas como RAW Queries.
Podemos afirmar que o seu uso é muito parecido com o Dapper, mas em um contexto do EF.
Como funciona ? Imagine que você tem um banco de dados de Livros, como o script abaixo:</description>
    </item>
    
    <item>
      <title>EntityFramework - Se você usa Migrations com Azure Database, preste muita atenção!</title>
      <link>https://carloscds.net/2023/09/entityframeworkcore-databasetier/</link>
      <pubDate>Mon, 18 Sep 2023 00:00:00 +0000</pubDate>
      
      <guid>https://carloscds.net/2023/09/entityframeworkcore-databasetier/</guid>
      <description>O EntityFramework possui o recurso de migrations que ajuda demais no desenvolvimento de aplicações, pois com a abordagem do CodeFirst você vai criando as suas classes e ao rodar o migrations tudo é aplicado no banco de dados. Muito útil durante o desenvolvimento!
Até aí nada demais, inclusive eu já abordei o Migrations em diversos artigos aqui no blog, então onde está o problema ?
Azure Database Default Config Quando você cria um banco de dados no Azure, por exemplo com o comando:</description>
    </item>
    
  </channel>
</rss>
