Novidades no Rider

O Rider 2021.3 vem com suporte oficial para o .NET 6 SDK, incluindo o recurso Hot Reload. Ele traz uma barra de ferramentas principal totalmente reformulada, a aba Debug e uma nova janela de ferramentas Problems View. O Rider também oferece suporte a mais recursos C# 10, como namespaces com escopo de arquivo e diretivas de uso global, para ajudar você a usar os recursos de linguagem mais recentes da maneira mais eficaz.

Ele também inclui atualizações para suporte a Unity e F#, Reformat and Cleanup ao salvar, a opção XAML Preview para os SDKs .NET 6, .NET 5 e .NET Core 3.x, e suporte para chips Apple Silicon.

Suporte para o SDK .NET 6

O Rider 2021.3 fornece suporte oficialmente para o SDK .NET 6, incluindo:

  • Modelos de projeto.
  • As frameworks de destino mais recentes.
  • A API NuGet mais recente.
  • Hot Reload.
  • Depuração para o Blazor WebAssembly.
  • Criação/execução/depuração de projetos visando o novo SDK.
  • ASP.NET Scaffolding para projetos .NET 6.

O Rider também oferece suporte inicial para projetos Xamarin iOS e Xamarin Android que fazem parte do SDK .NET 6.

Hot Reload

O Rider suporta o recurso Hot Reload do .NET 6! Quando você modificar o código-fonte gerenciado na sua aplicação enquanto ela está em execução, o Rider perguntará se você deseja aplicar essa alteração à aplicação em execução sem reiniciá-la. Observe a barra de notificação amarela Sources are modified na parte superior do editor de texto. Se você aceitar a alteração, sua aplicação será atualizada imediatamente, e será possível continuar trabalhando com a aplicação atualizada.

O recurso Hot Reload é habilitado automaticamente ao usar as configurações de execução .NET Project e .NET Launch Settings Profile.

Há uma nova página dedicada para habilitar e desabilitar o recurso Hot Reload: Preferences/Settings | Build, Execution, Deployment | Hot Reload.

Limitações:

  • A depuração durante uma sessão de Hot Reload está disponível apenas no Windows, onde você pode usar o Hot Reload junto com o depurador e aplicar automaticamente as alterações durante o passo e retomada. O Hot Reload funciona em todas as plataformas quando não está depurando.
  • O Hot Reload não suporta aplicações F# e VB.NET. Além disso, o Hot Reload não suporta alterações feitas nos formatos da interface do usuário em frameworks como WPF, Windows Forms e .NET MAUI. Também não há suporte ainda para o Blazor WebAssembly (WASM).
  • Para exibir as mudanças que você fez no Razor Pages, você precisa recarregar a página no seu navegador. O recarregamento automático de páginas será adicionado em versões futuras.

Saiba mais: Hot Reload para .NET 6 no Rider 2021.3

UI/UX

Barra de ferramentas principal reformulada

A antiga barra de ferramentas principal tinha alguns problemas que queríamos eliminar. Havia muitos ícones, e a maioria deles quase nunca eram usados. O VCS e a funcionalidade de navegação não eram detectáveis. E o mais importante, não era possível controlar múltiplas configurações de execução.

O Rider 2021.3 vem com uma barra de ferramentas principal completamente reformulada. Com o novo design, tentamos fornecer uma barra de ferramentas limpa, mas ainda funcional, para os nossos usuários. Ela inclui o seguinte:

  • Botões Back e Forward, que são os fundamentos da navegação contextual do Rider.
  • Um widget de VCS para acessar e operar todos os recursos relacionados ao VCS. Este widget agora está localizado próximo à janela de ferramentas Commit.
  • Um grande campo Search Everywhere que serve como ponto de entrada principal para a função de pesquisa global.
  • Um widget Solution Configuration para gerenciar configurações relacionadas à solução.
  • Um novo widget Run/Debug que permite gerenciar e controlar facilmente suas configurações de execução.

No entanto, como não queremos interromper o fluxo de usuários do Rider que já estão confortáveis usando a barra de ferramentas antiga, a nova versão será habilitada por default apenas nas novas instalações do Rider. Se você já tem o Rider instalado, mas deseja experimentar a nova barra de ferramentas, pode habilitá-la a qualquer momento em View | Appearance | Toolbar em vez de em Toolbar Classic.

Problems View

Ter todos os problemas potenciais de uma solução em um só lugar pode ser útil, e é por isso que temos o prazer de apresentar a Problems View. A Problems View (a aba Problems na UI do Rider) é uma janela de ferramentas que agrega todos os possíveis problemas existentes em uma solução, como erros de carregamento de projeto, processos de restauração do NuGet com falha, inspeções de um arquivo aberto e todos os erros de SWEA. A janela de ferramentas consiste de três abas.

Current File

Aqui, você pode encontrar todos os erros, avisos, sugestões e dicas que a análise de código do Rider encontrou no arquivo com o qual você está trabalhando. Ela funciona da mesma maneira que nos nossos IDEs baseados em IntelliJ – o widget Inspection localizado na parte superior da barra de rolagem vertical leva diretamente a essa aba.

Toolset, Environment

Essa aba agrega todos os diagnósticos e mensagens relacionadas às atividades de carregamento da solução, processos de restauração do NuGet e assim por diante. Para cada problema, ela oferece uma descrição adequada e uma lista correspondente de correções, se houver. Antes, era necessário abrir a janela de ferramentas Event Log para encontrar detalhes para esses tipos de mensagens de diagnóstico.

All Solution Files

Este é o novo destino da janela de ferramentas SWEA. Aqui, você pode ver todos os erros que a SWEA (Solution Wide Error Analysis) encontrou em toda a solução.

Nova janela de ferramentas Bookmarks

Introduzimos a nova janela de ferramentas Bookmarks, destinada a substituir uma instância semelhante: Favorites.

Quando você adiciona um bookmark, por default, o Rider o coloca no nó com o nome do seu projeto na janela de ferramentas Bookmarks. Cada vez que você adicionar um novo bookmark, ele aparecerá no topo da lista dentro desse nó. Você também pode criar novos nós e arrastar e soltar itens neles.

Depurador

Nova UI para a aba Debug

Uma nova UI está chegando na aba Debug! Temos muitas mudanças sobre as quais conversar.

Por default, existem três abas: Threads & Variables, Console e Debug Output. Outras abas, como Memory e Parallel Stacks, estão ocultas, mas você pode mostrá-las por meio do menu Options (o ícone de engrenagem à direita).

Removemos completamente a barra de ferramentas à esquerda e transferimos os ícones que estavam localizados nela para a barra de ferramentas superior ou para o menu de contexto. Para manter a barra de ferramentas superior a mais compacta possível, reordenamos o conjunto de ícones e deixamos apenas as ações mais importantes visíveis. O restante dos ícones foram movidos para o menu suspenso More (o ícone de pontos verticais). O ícone Hide Frames from Libraries e o botão de alternância Hide/Show Threads foram movidos para o menu de contexto na exibição Threads.

O menu suspenso More tem um novo submenu Settings. Aqui, você pode encontrar uma lista das configurações mais comuns relacionadas ao depurador sem ter que procurá-las acessando a caixa de diálogo Settings/Preferences e detalhando a navegação na página Build, Execution, Deployment | Debugger.

Atualizações na janela Immediate

Existem dois layouts: maximizado e minimizado. No layout minimizado, a exibição Variables mostra o resultado da execução apenas na variável $result. No layout maximizado, além da variável $result, você pode ver o histórico das linhas executadas anteriormente, bem como seus resultados. É possível alternar entre os layouts usando o ícone Expand/Collapse.

A opção Add Watch foi movida da exibição Variables para a barra de ferramentas da janela Immediate e agora tem um atalho, Ctrl+Shift+Enter.

A nova opção Stop on Breakpoints força o processo de computação a parar nos pontos de interrupção ao executar uma expressão. Desabilitar essa opção permitirá que o processo de computação ignore os pontos de interrupção.

Para deixar a computação de um objeto com muitas propriedades mais conveniente, adicionamos aqui um ícone Evaluate que abre a janela Evaluate com esse objeto já computado. É muito mais fácil ver as propriedades do objeto como uma árvore nessa janela.

Depuração para aplicações UWP

Boas notícias para os desenvolvedores UWP: é possível iniciar um projeto UWP com o depurador anexado imediatamente. Você não precisa mais executar o projeto primeiro e depois anexar manualmente o depurador ao processo em execução.

Suporte para contêineres Docker para Windows

Agora, você pode depurar aplicativos .NET (Core) e .NET Framework em contêineres Docker locais para Windows. Antes, o depurador funcionava apenas com aplicações .NET Core em contêineres Docker para Linux.

Outras atualizações

Ao criar um delegado padrão (System.Func ou System.Action), você pode navegar facilmente até um método ou uma expressão lambda que será encapsulada pelo delegado. Confira o link Navigate do nó do delegado na lista Variables.

Quando você cria um manipulador de eventos (delegate) usando uma expressão Lambda, o novo visualizador permite que você investigue os assinantes e objetos capturados mais de perto.

O manipulador de eventos agora tem um nó Subscribers com um subnó Captured variables. Para navegar rapidamente até onde um evento foi assinado, adicionamos um novo link Navigate para cada assinante.

Análise de código

C# 10

O Rider continua a adicionar mais recursos para C#10. Hoje temos o prazer de anunciar o suporte a namespaces com escopo por arquivo, ao 'using' global, ao atributo CallerArgumentExpression, ao conceito de "manipuladores de strings interpoladas" e a lambdas do C# 10.

Vamos começar falando dos namespaces com escopo por arquivo. Além de oferecer suporte à nova sintaxe propriamente dita, adicionamos uma nova opção de Estilo de sintaxe que permite selecionar o estilo desejado (Settings/Preferences | Editor | Code Style | C# | Syntax Style | Code body | Namespaces). Quando você escolher um estilo, o Rider lhe mostrará o resultado de inspeções pelo código que terá que ser mudado para seguir o estilo e lhe sugerirá as correções rápidas apropriadas. Você pode propagar as correções por todo o projeto ou até por toda a solução com apenas um clique.

Agora há duas ações de contexto que permitem a você voltar o seu código ao estilo anterior de sintaxe: Convert to file-scoped namespace e Convert to block-scoped namespace.

Saiba mais em: Namespaces com Escopo por Arquivo

Agora vamos dar uma olhada rápida nos 'using' globais. A análise de código do Rider é sensível a instâncias de 'using' com a palavra-chave global e usa essas instâncias para resolver os símbolos corretamente em todos os arquivos de código do projeto. O Rider também avisará se um 'using' global tiver sido colocado no lugar errado em um arquivo.

O Rider realçará como não utilizado instâncias de 'using' global que não estiverem sendo usadas no projeto e oferecerá uma correção rápida para remover a declaração.

O Rider traz um amplo suporte ao atributo CallerArgumentExpression, incluindo complementação e inspeções de código, para ajudar você a usar esse atributo adequadamente.

Saiba mais em: CallerArgumentExpression

O C# 10 introduziu o novo conceito de "manipuladores de strings interpoladas". Para os usuários finais, isto significa que expressões de interpolação de strings geralmente funcionam mais rapidamente no .NET 6 e que os novos manipuladores também tornam possível usar valores Span<char> em lacunas de interpolação. Para os programadores de bibliotecas, este recurso permite controlar se expressões de interpolação de strings são ou não convertidas em strings. O Rider 2021.3 reconhece o padrão de "manipuladores de strings interpoladas" no código da biblioteca e agora pode sugerir usar expressões de interpolação de strings em mais lugares com segurança.

O Rider ajuda você a obter o melhor desempenho com record structs, sugerindo que você os marque como readonly. Para evitar atulhar as declarações de tipo com modificadores sem necessidade, esta inspeção só é mostrada quando o tipo record tiver membros de instância não mutantes e não houver mutações através de setters na solução (requer a análise habilitada em toda a solução).

O C# 10 permite que você simplifique um pouco a sintaxe da correspondência de padrões por permitir o acesso com a sintaxe de pontos em vez do aninhamento de padrões de objeto.

O Rider oferece a inspeção correspondente a essa sintaxe com uma correção rápida, e também uma ação de contexto para desfazer essa correção rápida.

E por último, mas não menos importante:

  • Melhoramos o suporte a lambdas no C# 10: não se espera que haja nem código vermelho, nem erros de falso positivo nos projetos da API Mínima do .NET 6. Como bônus, o Rider também ajuda você a usar a sintaxe correta e a acrescentar parênteses quando eles forem esperados pelo compilador.
  • O Rider agora aceita Program como nome de classe gerado válido para código com declarações top-level.
  • Agora também há suporte inicial a membros static abstract em interfaces. A análise do código considera essa construção válida, o que significa que você não terá mais que lidar com código vermelho. O recurso Generate missing members é sensível a membros do tipo static abstract e lida com eles corretamente. Esta versão também inclui marcas de medianiz herdadas e a capacidade de navegar até símbolos de base ou derivados.

Tipos de referência anuláveis

Não é raro que as pessoas copiem trechos de código de outros recursos, como stackoverflow.com. Atualmente, com os tipos de referência anuláveis disponíveis no C#, algumas amostras de código já incluem a sintaxe NRT. Mas e se você não tiver a NRT ativada na sua solução? O Rider tem duas novas correções rápidas para ajudar você a se livrar dessa sintaxe depois de incorporar esse código ao seu projeto: Replace with JetBrains.Annotations attributes e Remove nullable annotations without ‘#nullable’ context.

Ocasionalmente, pode haver discordâncias na possibilidade de ser anulável entre os argumentos de tipo e suas restrições de anulação. Agora há correções rápidas para esses casos, incluindo as que:

  • Removem anotações passíveis de serem anuladas dos argumentos de tipo.
  • Removem restrições notnull dos argumentos de tipo.
  • Permitem valores anuláveis em parâmetros de tipo.
  • Proíbem valores anuláveis em parâmetros de tipo usados como argumentos de tipo.

Está disponível uma correção rápída em massa para anotações em parâmetros com valores default anuláveis em todo um arquivo, projeto ou solução.

Há também uma correção rápida em massa que torna um parâmetro anulável se for verificado se ele é nulo dentro de um método.

Análise de código C#

Acrescentamos algumas novas correções rápidas e uma ação de contexto para funções locais ou anônimas do tipo static com closures:

  • A correção rápída Allow closures remove modificadores static de uma função local ou anônima contendo closures.
  • A correção rápida Pass closure as a parameter promove closures a parâmetros em funções locais estáticas.
  • A ação de contexto Pass closure as a parameter promove closures a parâmetros em funções locais não estáticas.

Há uma nova inspeção, Simplify string interpolation, com uma correção rápida correspondente, que substitui as chamadas de método .PadLeft() e .PadRight() com expressões de alinhamento dentro de espaços reservados para strings interpoladas.

Além de adicionar o novo record struct do C# 10, também aprimoramos nosso suporte para structs regulares. Muitos desenvolvedores ainda usam classes com inicializadores de objetos em seus DTOs. Agora você pode transformar rapidamente todos esses usos em construtores com parâmetros. Isso pode ser feito na própria declaração record ou de qualquer inicializador de objeto. Observe que DTOs que definem um construtor com atribuição de propriedades também podem ser convertidos.

Já há algum tempo, o Rider alerta você a respeito de bloqueios inconsistentes em campos. Nesta versão, acrescentamos uma inspeção complementar que também leva em conta a ordem de vários recursos bloqueados, informando a você sobre possíveis ciclos de deadlock.

Agora o Rider verifica a plausibilidade de expressões aritméticas quanto a tipos adicionais de números inteiros, como byte, sbyte, short, ushort, uint, long, ulong e enum. Isto ajuda você a evitar branches inalcançáveis no código.

Desempenho da análise de código

Reduzimos o tempo que demora para executar correções rápidas e ações de contexto quando invocadas para uma pasta, projeto ou solução.

Se a opção Solution-Wide Error Analysis (SWEA) estiver ativa em Monitor warnings, o Rider agora usará os resultados da SWEA para simplesmente pular os arquivos sem os problemas correspondentes, reduzindo em muito o tempo gasto procurando problemas a corrigir.

Também temos boas notícias para aqueles que não executam a SWEA nas suas soluções! O Rider agora utiliza todos os núcleos de CPU disponíveis para executar a análise de código em paralelo. Isto reduz o tempo total de execução de correções rápidas e ações de contexto de escopo.

 

Melhoramos significativamente o desempenho do daemon em arquivos que contêm métodos muito grandes, tais como:

  • Métodos com expressões condicionais grandes ou aninhadas, expressões de tuplas pu expressões switch.
  • Métodos com muitas verificações de tipo, quando tipos de referência anuláveis estiverem desativados.
  • Métodos com muitos acessos de indexação, quando tipos de referência anuláveis estiverem ativados.
  • Métodos com um número muito grande de closures, quando tipos de referência anuláveis estiverem ativados.

Injeções de linguagem SQL

Melhoramos o suporte para injeções de linguagem SQL. Agora, oferecemos suporte a muitos casos comuns em que você escreve código SQL dentro do código C#.

As strings de consulta SQL são resolvidas corretamente para métodos string.Format, interpolações de string e concatenações de string simples.

Não ocorrem mais erros quando variáveis SQLParameter para parâmetros dentro de strings de consulta SQL são usadas com o dialeto Microsoft SQL Server ou a biblioteca Dapper.

Zona de jogos

Unity

Este lançamento traz atualizações importantes no suporte do Rider para Arquivos de Definição de Assembly. Você pode usar Ctrl+Clique para navegar até uma referência, encontrar usos de definições de assembly em todo o projeto, até mesmo em pacotes referenciados, renomear definições de assembly e obter complementação ao adicionar novas referências.

O Rider também trabalhará com referências baseadas em GUID, exibindo uma dica útil com o nome da definição do assembly de destino, bem como ações Alt+Enter para converter entre referências nomeadas e baseadas em GUID.

Agora, o Rider realçará “define constraints” não atendidas em Arquivos de Definição de Assembly. Isso torna mais fácil saber por que um assembly foi excluído. Você ainda obtém complementação para símbolos define.

A configuração de version defines também ficou mais fácil, com complementação para nomes de pacotes e uma dica embutida para a versão atualmente instalada. O Rider também realçará o símbolo se a condição não for atendida.

Agora, o Rider mostrará os arquivos de origem de pacotes Unity referenciados em um contexto especial que fornece informações sobre quais símbolos foram definidos quando os pacotes foram compilados. Isto significa que os arquivos fonte serão mostrados com os branches de pré-processador corretos realçados.

O atributo [Tooltip] do Unity fornece texto que o Inspetor pode mostrar ao editar campos. O Rider também mostrará esse texto como parte do pop-up Quick Documentation sempre que você estiver usando um campo serializado. Há também uma nova ação de contexto para criar a dica de ferramenta a partir da documentação XML, e vice-versa.

O suporte do Rider para depuração em dispositivos iOS via USB foi atualizado para funcionar com o Apple Silicon, e este lançamento também inclui suporte para Linux.

O índice de ativos agora procura em pacotes referenciados, o que significa que o Rider pode encontrar usos de código em prefabs com base em ativos em pacotes.

O rastreamento de metarquivos foi completamente reescrito para lidar com mais casos de uso. Ele deve funcionar sem percalços quando você adicionar, remover, renomear, mover ou refatorar arquivos na janela de ferramentas Unity Explorer.

Este lançamento também fornece uma série de correções, como a atualização do índice de ativos quando o arquivo está sendo atualizado por certos tipos de aplicações externas, abertura de arquivos do Unity no Apple Silicon e atualização da análise do Burst para corresponder às alterações no compilador Burst. Também melhoramos o desempenho do Rider ao procurar versões instaladas do Unity e atualizar a janela de ferramentas de visualização do log do Unity.

Unreal Engine Demonstração prévia

Testes Unreal Engine

Se você adicionar testes ao seu jogo com a framework de testes Unreal Engine, o Rider agora poderá iniciar testes e exibir seus resultados na janela de ferramentas Unit Test. Nessa janela de ferramentas, você pode revisar os resultados dos testes e executar novamente qualquer um que desejar: testes específicos, testes com falha ou todos. Você também pode agrupar testes pelos flags transmitidos a eles.

Saiba mais

O Rider for Unreal Engine está avançando da demonstração pública prévia para o lançamento final. Por enquanto, ele ainda é uma demonstração prévia gratuita como um build separado do Rider que está disponível mediante o envio de um formulário.

Frameworks

WPF

Agora, a opção XAML Preview funciona para aplicações direcionadas aos SDKs .NET 6, .NET 5 e .NET Core 3.x. Você pode visualizar os resultados de qualquer alteração feita no código XAML diretamente no Rider.

Xamarin

  • No Plist editor, implementamos suporte para esquemas Xcode padrão. Eles ajudam o Rider a fornecer nomes amigáveis para chaves, validação de valores de acordo com o tipo de chave e uma lista de chaves possíveis quando você adiciona uma nova ao plist. Esses esquemas funcionam no macOS e no Windows.
  • Agora, você pode baixar componentes do Android como pacotes NuGet diretamente do editor.
  • O suporte para bibliotecas AndroidX está disponível para projetos que as suportam.
  • Melhoramos o layout do editor Android.

Limpeza de código, formatação e estilos de código

Reformat and Cleanup on Save

Introduzimos a configuração Reformat and Cleanup on Save. Esse recurso permite que o seu código seja reformatado e organizado sempre que você invocar explicitamente Save ou Save All no IDE. Nenhum dos gatilhos implícitos de salvamento, como build, mudança para outra aba e commit, fará com que o código seja reformatado. Em vez disso, o Rider adicionará o documento modificado a uma lista interna de arquivos a serem limpos e reformatados no próximo salvamento explícito. Esperamos que esse recurso ajude você a manter seu código limpo e organizado e evite que você tenha que se preocupar com isso.

Para habilitar e ajustar essa configuração, acesse Preferences/Settings | Tools | Actions on Save. Aqui, você pode selecionar o perfil de limpeza que será usado. A lista dos perfis disponíveis é herdada da página Preferences/Settings | Editor | Code Cleanup. Você também pode especificar se a ação deve ser aplicada a todo o arquivo ou apenas às linhas alteradas.

Além disso, o recurso Reformat and Cleanup on Save respeita a configuração Do not format. Para especificar os arquivos e diretórios que devem ser excluídos da formatação, use a aba Preferences/Settings | Editor | Code Style | Formatter.

Outras melhorias

O recurso Reformat and Cleanup funciona para múltiplos arquivos e diretórios selecionados na janela de ferramentas Solution Explorer.

Adicionamos novas opções ao formatador:

  • Uma opção para indentar chaves de padrões de propriedade ou lambda dentro de condições de instruções, como dentro de if() e while().
  • Uma opção para alinhar condições de instruções entre parênteses em if(), foreach() e assim por diante. Ela está ATIVADA por default.
  • Opções para envolver, cortar, alinhar e desintendar padrões binários, por exemplo, x is Foo or Bar or Baz.

Começando com o SDK .NET 5, você pode configurar as opções do analisador do Visual Studio com arquivos AnalyzerConfig globais. O Rider 2021.3 pode ler as informações de estilo de código desses arquivos AnalyzerConfig globais e usá-las para ajustar as regras do Rider de acordo.

Desenvolvimento Web

Nova inspeção para atualização de dependências

O Rider permite que você atualize seus pacotes npm para a versão mais recente diretamente a partir do editor! Abra seu arquivo package.json, coloque o cursor na versão do pacote que você deseja atualizar e depois pressione Alt+Enter e selecione Update ‘nome do pacote’ to the latest version. Uma correção rápida também será exibida quando você passar o mouse sobre a versão do pacote. Mais detalhes sobre os motivos por detrás dessa inspeção podem ser encontrados nesta postagem do nosso blog.

Complementação de código aprimorada em HTML

Melhoramos o funcionamento da complementação de código em HTML. Sempre que você digitar um nome de tag ou uma abreviação no editor, ou invocar a complementação de código, o Rider mostrará sugestões relevantes imediatamente. Antes, ele só mostrava essas sugestões se você digitasse um <. Além disso, a complementação de código para referências de entidades de caracteres deve funcionar melhor agora.

Suporte para NuGet

O Rider pode gerar Binding Redirects para pacotes NuGet em projetos do .NET Framework. Se os Binding Redirects forem necessários no seu projeto, o Rider os adicionará ao arquivo App.config ou Web.config.

Binding Redirects são gerados quando um pacote NuGet é instalado ou atualizado. No entanto, você pode pedir ao Rider para gerar os Binding Redirects manualmente a qualquer momento via Tools | Generate Binding Redirects, localizado no menu de contexto do projeto dentro da janela de ferramentas Solution Explorer.

Há uma nova propriedade, Auto-Generate Binding Redirects, na aba Applications da página Properties do projeto. Ela solicitará que o MSBuild gere Binding Redirects enquanto o projeto está sendo construído se não houver redirecionamentos no arquivo App.config.

Além de adicionar suporte para Binding Redirects, implementamos uma pequena melhoria de UX (experiência do usuário). Agora, você pode desinstalar pacotes NuGet diretamente da janela de ferramentas Solution Explorer.

Suporte a Apple silicon

A partir deste lançamento, o Rider é executado nativamente em computadores Mac com processadores Apple Silicon. O Rider 2021.3 usa os seguintes runtimes:

  • O JetBrains Runtime compatível com Apple Silicon para o front-end.
  • O .NET6 RTM para o back-end.

Não há mais conversão de x64 para ARM64! Agora, o Rider é super rápido com chips da Apple!

Suporte a F#

A maior novidade é que o Rider agora oferece suporte oficialmente a F# 6! Neste lançamento, você também encontrará muitas atualizações de qualidade para complementação de código, refatoração e navegação, junto com várias outras melhorias no suporte para a linguagem F#.

A refatoração Introduce Variable recebeu algumas atualizações poderosas. Agora, ela sugere que você desconstrua tuplas e tipos union de caso único quando necessário e também sugere o uso de tipos de computação em expressões de computação. Além disso, ela recomenda as palavras-chave use e use! quando aplicável, e nós melhoramos a colocação de vínculos adicionados.

Este lançamento contém uma série de atualizações para complementação de código, incluindo uma ordem melhor de sugestões e filtragem de palavras-chave com base no contexto inicial (algumas palavras-chave não aparecem mais quando não são aplicáveis). O uso recursivo de funções F# agora é mais fácil, pois você não precisa voltar e adicionar manualmente rec à função que o contém.

Há outra atualização importante para complementação de código. Ao complementar padrões de caso em union, o Rider sugerirá que você use a correspondência de padrões para seus campos.

Novos ícones nos resultados de Find Usages ajudarão você a distinguir invocações, aplicações parciais, padrões e outros tipos de uso.

Agora, o Rider permite que você estenda adequadamente sua seleção dentro de strings interpoladas. Special thanks to Andrew Rublyov for this contribution! O comportamento de seleção para _ e vários tipos de colchetes também foi aprimorado.

Implementamos uma série de pequenas correções rápidas, refatorações e outras melhorias no suporte à linguagem F#. Please take a look at the full release notes for more information.

Plug-ins

dotCover
dotUltimate

Há uma nova métrica Code Vision: Covering tests. Essa métrica será exibida se o Rider tiver as informações de cobertura do projeto e se o método (ou a propriedade, o indexador ou o evento) for coberto por pelo menos um teste.

Ela pode ser habilitada ou desabilitada na página Settings/Preferences | Editor | Code Vision.

Agora, é possível iniciar testes de unidade em uma janela pop-up que aparece quando você clica na linha de cobertura no lado esquerdo do editor de código.

dotTrace
dotUltimate

O plug-in dotTrace permite coletar dados em chamadas assíncronas no macOS e Linux. Para obter esses dados, use o modo de profiling do Timeline. A árvore de chamadas Call Tree mostra as chamadas assíncronas, incluindo awaits e continuations.

O plug-in dotTrace pode fazer profiling de processos filho de aplicações no macOS e Linux no modo de profiling do Timeline. Esse suporte só está disponível para aplicativos que usem .NET 5 ou mais recente.

Navegação e Find Usages

Novas marcas de medianiz

Adicionamos algumas novas marcas de medianiz para ajudar você a navegar rapidamente através da estrutura de herança de uma classe, interface ou struct. Os novos ícones ↑O e ↑I mostram respectivamente quando uma entidade de código herda ou implementa outra classe ou interface. Se a herança dessa entidade de código for complexa, ao se clicar em um desses ícones aparecerá um menu com todos os ancestrais acima daquela entidade, até o topo da hierarquia de herança. Se uma classe implementar ou herdar uma interface e uma classe ao mesmo tempo, o Rider mostrará um ícone ↑IO na medianiz.

Além disso, nesta versão ativamos por default as marcas de medianiz para membros de classes. O Rider adicionará o ícone ↓O na medianiz à esquerda de um membro de classe se este for sobreposto em classes derivadas. Clicar nesse ícone:

  • Fará você navegar até um membro de uma classe derivada que sobrepõe este membro.
  • Mostrará um menu com uma lista dos membros de outras classes que sobrepõem este membro.

Find Usages para operadores de conversão implícita definidos pelo usuário

Agora você pode chamar o Find Usages para operadores operator de conversão implícita definidos pelo usuário! A implementação deste recurso é baseada no mecanismo usado para dicas de conversão de tipos.

Este recurso permite que você descubra se operadores operator de conversão implícita definidos pelo usuário estão sendo usados ou não, e depois navegar até os blocos de código com as conversões.

Tenha em mente que este algoritmo não é rápido e pode demorar bastante para calcular os resultados e mostrá-los.

Suporte para bancos de dados

Aggregates no editor de dados

Adicionamos a capacidade de mostrar uma visualização agregada (Aggregate) para um intervalo de células. Este é um recurso aguardado há muito tempo que ajudará você a gerenciar os seus dados e evitará que você tenha que criar consultas adicionais! Isto torna o editor de dados mais poderoso e fácil de usar, deixando-o um passo mais próximo das planilhas do Excel e do Google.

Basta selecionar o intervalo de células cuja exibição você deseja mostrar e depois clicar com o botão direito e selecionar Show Aggregate View.

Mapeando a fonte de dados DDL e a real

Esta versão é uma continuação lógica da anterior, que introduziu a capacidade de gerar uma fonte de dados DDL com base numa fonte de dados real. Agora, esse workflow tem suporte total. Você pode:

  • Gerar uma fonte de dados DDL a partir de uma fonte de dados real: veja o anúncio da versão 2021.2 do DataGrip.
  • Usar a fonte de dados DDL para mapear a fonte de dados real.
  • Comparar e sincronizar as duas fontes em ambas as direções.

Apenas como lembrete, uma fonte de dados DDL é uma fonte de dados virtual cujo esquema é baseado num conjunto de scripts de SQL. Armazenar esses arquivos no Sistema de Controle de Versões (VCS) é uma maneira de manter o seu banco de dados sob o VCS.

Há uma nova aba DDL mappings nas propriedades de configuração dos dados. Nessa aba, você pode definir qual fonte de dados real será mapeada para cada fonte de dados DDL.

Nova janela de diff do banco de dados

A nova janela Database Diff está disponível no menu de contexto. Ela tem uma UI melhorada que mostra claramente no painel direito o resultado que você obterá depois de executar a sincronização.

A legenda do painel direito mostra o que significam as cores em relação ao resultado em potencial:

  • Verde e itálico: o objeto será criado.
  • Cinza: o objeto será excluído.
  • Azul: o objeto será alterado.

A aba Script Preview mostra o script de resultado, que pode ser aberto num novo console ou executado a partir deste diálogo. O resultado desse script é aplicar alterações para fazer o banco de dados à direita (o destino) ser uma cópia do banco de dados à esquerda (a origem).

Além da aba Script preview, há mais duas abas no painel inferior: Object Properties Diff e DDL Diff. Elas exibem a diferença entre as versões específicas do objeto na origem e nos bancos de dados de destino.

Outros

Propriedades do projeto

Este lançamento traz várias novas configurações para a caixa de diálogo Project Properties:

  • Você pode personalizar o ícone da aplicação na seção Resources da página Application.
  • Há uma nova página Build Events para especificar os comandos a serem executados antes e depois do build.
  • A página Inspections tem várias novas propriedades de projeto relacionadas à análise de código: Localizable, Localizable inspector e Solution-Wide inspections.
  • Você pode configurar caminhos de referência para um projeto na página Reference Paths.
  • Há uma nova propriedade, Auto-Generate Binding Redirects, na aba Applications. Confira a seção NuGet Support acima para saber mais sobre Binding Redirects.

Solution Properties

A tabela na caixa de diálogo Solution Properties tem uma nova coluna Dependencies para especificar as dependências de build para cada projeto. Alguns dos projetos estão desabilitados na seleção para evitar dependências circulares.

Configurações de execução

A partir do lançamento 2021.3, o Rider importa todos os arquivos .pubxml de Properties/PublishProfiles quando um projeto é carregado e os converte em configurações de execução. Sempre que você adiciona um novo arquivo .pubxml, uma nova configuração de execução é gerada automaticamente. Você não precisa mais criar essas configurações de execução manualmente.

Há um seletor de runtimes explícito para especificar o runtime que será usado para rodar a aplicação. A lista depende do sistema operacional usado, mas a lista completa contém.NET/.NET Core, .NET Framework e Mono.

Suporte para o atributo EditorBrowsable na complementação de código

Agora, você pode ajustar a lista de complementação de código para filtrar itens de acordo com o atributo EditorBrowsable. Basta selecionar o comportamento desejado na página Preferences | Editor | General | Code Completion em Filter members by EditorBrowsable attribute.

Alterar o tamanho da fonte em todas as abas

Conforme solicitado, tornamos possível alterar o tamanho da fonte em todas as abas abertas simultaneamente com + roda do mouse no macOS ou Ctrl + roda do mouse no Windows e Linux. Para habilitar essa recurso, acesse Preferences/ Settings | Editor | General, escolha Change font size with Command + Mouse Wheel in e selecione All editors. Se você selecionar Active editor, o atalho mudará o tamanho da fonte apenas no arquivo em que você está trabalhando no momento.