<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>.NET 11 | The .NET Blog</title><link>https://thedotnetblog.com/pt/tags/.net-11/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>pt</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Tue, 26 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/pt/tags/.net-11/index.xml" rel="self" type="application/rss+xml"/><item><title>.NET 11 finalmente corrige a API de Processos</title><link>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/dotnet-11-process-api-improvements-runandcapturetext/</link><pubDate>Tue, 26 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/dotnet-11-process-api-improvements-runandcapturetext/</guid><description>System.Diagnostics.Process recebe a sua maior atualização em anos. RunAndCaptureTextAsync, KillOnParentExit, APIs SafeProcessHandle e controlo total sobre o redirecionamento de handles padrão — sem mais boilerplate de deadlock.</description><content:encoded>&lt;p&gt;Todo desenvolvedor .NET que alguma vez precisou lançar um processo e capturar a sua saída escreveu alguma variação do mesmo boilerplate perigoso: leitura async de stdout, leitura async de stderr, &lt;code&gt;WaitForExitAsync&lt;/code&gt;, sem esquecer de drenar ambos os streams ou haverá um deadlock. É uma armadilha bem conhecida que existe há anos.&lt;/p&gt;
&lt;p&gt;O .NET 11 finalmente resolve isto corretamente.&lt;/p&gt;
&lt;h2 id="runandcapturetextasync"&gt;RunAndCaptureTextAsync&lt;/h2&gt;
&lt;p&gt;A adição principal: um único método estático que inicia um processo, captura stdout e stderr, e aguarda a saída sem deadlock.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;Process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RunAndCaptureTextAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;dotnet&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;--version&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;StandardOutput&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Uma única chamada. Sem drenagem manual de streams. Sem &lt;code&gt;WaitForExit&lt;/code&gt; cuidadosamente posicionado. Se apenas precisas de executar algo e obter a sua saída, esta é a API que queres.&lt;/p&gt;
&lt;p&gt;Existe também &lt;code&gt;Process.RunAsync&lt;/code&gt; para o caso em que queres aguardar a saída sem capturar o output.&lt;/p&gt;
&lt;h2 id="killonparentexit"&gt;KillOnParentExit&lt;/h2&gt;
&lt;p&gt;Um problema comum com processos lançados: se o processo pai falha ou é terminado, os processos filhos continuam a correr como órfãos. &lt;code&gt;KillOnParentExit&lt;/code&gt; permite-te declarar no momento de iniciar o processo que o processo filho deve ser terminado quando o processo pai sair.&lt;/p&gt;
&lt;p&gt;Esta é uma funcionalidade que existia de formas específicas da plataforma (job objects no Windows, prctl no Linux) mas exigia p/invoke ou bibliotecas de terceiros para ser usada a partir do .NET. Agora é uma propriedade de primeira classe em &lt;code&gt;ProcessStartInfo&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="apis-baseadas-em-safeprocesshandle"&gt;APIs Baseadas em SafeProcessHandle&lt;/h2&gt;
&lt;p&gt;A nova superfície de API leve é construída em torno de &lt;code&gt;SafeProcessHandle&lt;/code&gt; em vez da classe &lt;code&gt;Process&lt;/code&gt; completa. A classe &lt;code&gt;Process&lt;/code&gt; completa carrega muito estado e é difícil de fazer trim — o caminho &lt;code&gt;SafeProcessHandle&lt;/code&gt; é mais amigável ao trimmer para aplicações que precisam minimizar o tamanho de saída (WASM, AOT nativo).&lt;/p&gt;
&lt;h2 id="controlo-total-sobre-a-herança-de-handles"&gt;Controlo Total Sobre a Herança de Handles&lt;/h2&gt;
&lt;p&gt;A atualização também adiciona controlo granular sobre quais handles um processo filho herda e como os handles padrão são redirecionados. Anteriormente podias redirecionar stdin/stdout/stderr mas não podias especificar exatamente quais handles herdar ao nível do SO. As novas APIs expõem esse controlo.&lt;/p&gt;
&lt;h2 id="porquê-isto-importa"&gt;Porquê Isto Importa&lt;/h2&gt;
&lt;p&gt;A classe &lt;code&gt;Process&lt;/code&gt; é usada em tooling, sistemas de build, executores de testes e qualquer aplicação que invoca outros executáveis. A antiga superfície de API datava do .NET Framework e estava a mostrar a sua idade. Não é uma mudança que quebra compatibilidade — as APIs antigas continuam a funcionar — mas o novo código deve preferir a nova superfície.&lt;/p&gt;
&lt;p&gt;Para aplicações com trim ou cenários de compilação AOT, o caminho &lt;code&gt;SafeProcessHandle&lt;/code&gt; é particularmente bem-vindo. A antiga classe &lt;code&gt;Process&lt;/code&gt; trazia muito código pesado em reflexão que complicava o trimming.&lt;/p&gt;
&lt;p&gt;Post original: &lt;a href="https://devblogs.microsoft.com/dotnet/process-api-improvements-in-dotnet-11/"&gt;Process API Improvements in .NET 11&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title>.NET 11 Preview 4: Template de Servidor MCP, Bibliotecas Runtime-Async, API de Processos</title><link>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/dotnet-11-preview-4-mcp-template-runtime-async-process-api/</link><pubDate>Mon, 25 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/pt/news/emiliano-montesdeoca/dotnet-11-preview-4-mcp-template-runtime-async-process-api/</guid><description>.NET 11 Preview 4 está disponível. Os destaques: o template do servidor MCP no SDK, bibliotecas de runtime compiladas com runtime-async, dotnet watch para mobile e uma expansão significativa da API de Processos.</description><content:encoded>&lt;p&gt;.NET 11 Preview 4 está disponível. Cada versão de uma preview principal do .NET adiciona uma longa lista de itens envolvendo runtime, SDK, bibliotecas, ASP.NET Core, MAUI, C# e Entity Framework. Em vez de repetir a lista completa, aqui estão as coisas que chamaram minha atenção.&lt;/p&gt;
&lt;h2 id="o-template-de-servidor-mcp-chega-ao-sdk-do-net"&gt;O Template de Servidor MCP Chega ao SDK do .NET&lt;/h2&gt;
&lt;p&gt;O item mais interessante: um template de projeto de servidor MCP agora está incluído no SDK. Isso significa que &lt;code&gt;dotnet new mcp-server&lt;/code&gt; (ou qualquer nome que o comando venha a ter) funciona diretamente. Para quem está construindo ferramentas MCP em .NET, isso reduz consideravelmente a fricção inicial. A integração MCP na cadeia de ferramentas da plataforma sinaliza a direção que o ecossistema está tomando.&lt;/p&gt;
&lt;h2 id="bibliotecas-de-runtime-compiladas-com-runtime-async"&gt;Bibliotecas de Runtime Compiladas com Runtime-Async&lt;/h2&gt;
&lt;p&gt;O próprio runtime agora compila suas bibliotecas padrão usando o recurso runtime-async. É uma mudança interna que afeta o desempenho — as máquinas de estado async no runtime ficam mais eficientes. A importância aqui não está em mudanças visíveis na API; é que runtime-async está maduro o suficiente para ser usado com a própria BCL, o que é um sinal significativo sobre a maturidade do recurso.&lt;/p&gt;
&lt;h2 id="otimizações-de-jit-e-intrínsecos-de-hardware"&gt;Otimizações de JIT e Intrínsecos de Hardware&lt;/h2&gt;
&lt;p&gt;O Preview 4 continua o trabalho no JIT. Melhorias nos intrínsecos de hardware e na geração de código chegam aqui — os detalhes estão nas notas de versão do runtime. Esse tipo de mudança geralmente melhora o throughput em loops de cálculo intenso sem nenhuma mudança no seu código.&lt;/p&gt;
&lt;h2 id="expansão-da-api-de-processos"&gt;Expansão da API de Processos&lt;/h2&gt;
&lt;p&gt;Uma atualização importante para &lt;code&gt;System.Diagnostics.Process&lt;/code&gt; chega no Preview 4:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Process.RunAndCaptureTextAsync&lt;/code&gt; — iniciar um processo, capturar stdout/stderr, aguardar a saída, tudo em uma única chamada sem risco de deadlock&lt;/li&gt;
&lt;li&gt;&lt;code&gt;KillOnParentExit&lt;/code&gt; — acoplamento leve de ciclo de vida entre processos pai e filho&lt;/li&gt;
&lt;li&gt;APIs baseadas em &lt;code&gt;SafeProcessHandle&lt;/code&gt; mais compatíveis com o trimmer&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Se você já escreveu código repetitivo para capturar a saída de um processo sem causar deadlocks (leitura async de stdout &lt;em&gt;e&lt;/em&gt; stderr simultaneamente), &lt;code&gt;RunAndCaptureTextAsync&lt;/code&gt; é a API que faltava.&lt;/p&gt;
&lt;h2 id="dotnet-watch-para-android-e-ios"&gt;dotnet watch para Android e iOS&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;dotnet watch&lt;/code&gt; agora suporta seleção de dispositivo para projetos .NET MAUI Android e iOS. Iteração mais rápida em mobile sem gerenciar manualmente as conexões de dispositivos no ciclo de build.&lt;/p&gt;
&lt;h2 id="apis-de-compressão-baseadas-em-span"&gt;APIs de Compressão Baseadas em Span&lt;/h2&gt;
&lt;p&gt;Novas APIs de encoder/decoder Deflate, ZLib e GZip baseadas em span chegam às bibliotecas. Menos alocações ao lidar com dados comprimidos — relevante se você está fazendo processamento de dados de alto throughput.&lt;/p&gt;
&lt;h2 id="experimente"&gt;Experimente&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://dotnet.microsoft.com/download/dotnet/11.0"&gt;Baixar .NET 11 Preview 4&lt;/a&gt; — é uma preview, não pronta para produção, mas vale a pena executar nos seus projetos para detectar problemas cedo antes do ciclo de RC.&lt;/p&gt;
&lt;p&gt;Post original: &lt;a href="https://devblogs.microsoft.com/dotnet/dotnet-11-preview-4/"&gt;.NET 11 Preview 4 is now available!&lt;/a&gt;&lt;/p&gt;</content:encoded></item></channel></rss>