O Rider 2022.3 oferece suporte ao SDK do .NET 7, incluindo os últimos recursos do C# 11. Esta versão demonstra melhorias significativas de desempenho, com foco em especial no tempo de inicialização e na capacidade de executar o Rider no WSL 2 (Subsistema Windows para Linux 2) através de desenvolvimento remoto. Também introduzimos várias mudanças significativas na experiência e na interface de usuário, como a capacidade de encaixar janelas de ferramentas em configurações de múltiplos monitores. Por último, mas não menos importante, esta versão aumenta a integração com os editores do Unity e do Unreal.
Fizemos várias mudanças para diminuir o tempo de inicialização do Rider e a demora para abrir uma solução e começar a trabalhar:
Saiba mais sobre as melhorias de desempenho no Rider aqui.
Agora o Rider tem suporte ao WSL 2 (Subsistema Windows para Linux 2) através do recurso de desenvolvimento remoto do IDE. Isso significa que você pode usar o Rider em uma instância do WSL2 para navegar pelas suas soluções e códigos-fonte, além de desenvolver, depurar e executar aplicativos como se eles estivessem armazenados localmente.
Pode-se iniciar um processo simples de configuração diretamente da tela de boas-vindas do Rider. A interface de usuário será disponibilizada através do recurso de desenvolvimento remoto, o que significa que a WSLg não é necessária e um cliente local de desenvolvimento remoto será instalado automaticamente. Para mais informações, consulte a documentação do desenvolvimento remoto.
Finalmente chegou a muito solicitada opção de encaixar janelas de ferramentas em abas flutuantes do editor! Para tornar mais conveniente a organização do seu espaço de trabalho e a interação com o Rider em múltiplos monitores, implementamos a opção de arrastar as janelas de ferramentas para fora da janela principal e encaixá-las em abas flutuantes do editor.
Ajustamos o algoritmo por detrás da lista de resultados do Search Everywhere para tornar seu comportamento mais previsível e oferecer maior precisão na seleção dos elementos que você está procurando. Agora, quando você começa a digitar sua consulta, o IDE congela os primeiros resultados de pesquisa exibidos e não os reordena quando mais opções são encontradas (como acontecia em versões anteriores).
Introduzimos um novo diálogo Attach to process para melhorar a sua experiência de usuário, especialmente ao anexar o depurador a um processo via SSH. Nosso objetivo é ajudar você a encontrar e selecionar o processo correto mais rapidamente, além de fazer o IDE se lembrar do depurador escolhido.
Melhoramos a experiência de edição reformulando o comportamento da ação de colar (⌘V / Ctrl+V). Agora, quando você copiar (⌘C / Ctrl+C) ou recortar (⌘X / Ctrl+X) uma linha sem código selecionado, a ação de colar adicionará o conteúdo da área de transferência acima da linha atual, e não na posição do cursor, como acontecia nas versões anteriores.
Agora há uma ação Edit | Paste Special: JSON as Classes
que permite fazer a "colagem inteligente" de objetos. Por exemplo, se você precisar copiar um JSON e colá-lo usando esta ação, ela gerará classes de C# automaticamente, com base naquele JSON.
Convidamos você a passar para a nova interface de usuário para IDEs baseados no IntelliJ em Preferences/Settings | Appearance & Behavior | New UI Preview
. A nova interface de usuário é um trabalho em andamento que visa reduzir a complexidade visual do IDE e ajudar você a se concentrar no seu trabalho.
Também continuamos a implementar pequenas otimizações na experiência e na interface de usuário do Rider, para torná-lo mais relevante e útil:
File | New
no menu superior foi renomeada para File | New Solution
, para refletir melhor a ação que ela realmente executará. O Rider 2022.3 fornece suporte oficialmente para o SDK .NET 7, incluindo:
ref
e palavra-chave scoped
. Adicionamos o suporte básico a literais UTF-8
. Agora, a análise de código sugere usar um sufixo u8
para um literal, em vez do método System.Text.Encoding.UTF8.GetBytes()
, ou então uma matriz de bytes com símbolos UTF8
adequados. Há também um novo conjunto de alertas e erros do compilador para literais UTF-8.
O suporte básico a tipos de arquivos locais inclui compreender a nova sintaxe, um modificador de acessibilidade file
para os tipos e alertas e erros do compilador, com as correções rápidas correspondentes, como Move class to outer scope quando o modificador file
for especificado para uma classe aninhada. Há ainda uma nova ação de contexto que é útil para converter um tipo geral em um tipo de arquivo.
Agora o Rider pode converter strings regulares e textuais em seus equivalentes brutos. Isso também significa que vários recursos já existentes para strings agora também estão disponíveis para strings brutas.
Introduzimos nesta versão sugestões de uso da nova sintaxe de padrões de listas do C# 11 (em vez de verificações convencionais de tamanho de coleções seguidas de uma expressão de acesso ao indexador) para verificar os itens correspondentes da coleção.
A partir do C# 11, você pode usar modificadores abstract
e virtual
para membros static
em interfaces e usar esses membros em código genérico, com os parâmetros do tipo limitados por essa interface. O Rider foi atualizado para tratar membros static
polimórficos da mesma maneira como trata membros polimórficos comuns:
override
agora também incluem os membros da interface, de modo que agora você pode facilmente implementar membros abstratos ou virtuais estáticos
. >>>
) Agora o Rider reconhece o desajeitado padrão de código que os desenvolvedores em C# precisam escrever para fazer um deslocamento à direita sem sinal em tipos de dados com sinal e sugere usar o operador de deslocamento à direita sem sinal (>>>
) no C# 11.
Se você costuma fazer parsing de spans de caracteres, provavelmente usa muito o método MemoryExtensions.SequenceEqual
. O C# 11 introduz uma abreviatura desse tipo de verificação. Agora você pode simplesmente fazer uma correspondência de padrões entre spans de caracteres e literais de string, usando expressões is
ou switch
.
O Rider agora sugere usar as expressões is
e switch
, em vez de um monte de declarações if
.
ref
e palavra-chave scoped
A partir do C# 11, você pode declarar campos ref
dentro de structs ref
. O Rider dá suporte a essa nova regra de sintaxe, fornece todos os erros e alertas do compilador, mostra uma palavra-chave ref
na complementação de código e permite que esses campos sejam inicializados em um construtor.
O Rider também reconhece uma nova palavra-chave scoped
, que você pode usar em argumentos e variáveis locais ref
ou ref struct
. Esse suporte inclui o parsing correto da nova sintaxe, a palavra-chave scoped
na complementação de código e a preservação dessa palavra-chave ao gerar overrides de métodos. O Rider também verifica a compatibilidade de modificadores scoped
e oferece correções rápidas para parâmetros scoped
desbalanceados nos overrides, implementações de interface e conversões delegadas.
O C# 11 e o .NET 7 também introduziram mudanças nas regras de segurança da linguagem para ref
. As mudanças determinam quais operações estão disponíveis para variáveis ref
and ref struct
, para dar segurança no uso de ref em código gerenciado, com a introdução de campos ref
. O Rider reconhece essas mudanças e ajudará você a localizar as partes do seu projeto que precisam ser atualizadas e anotadas com a nova palavra-chave scoped
para acomodar essas mudanças ao migrar para o C# 11 ou o .NET 7.
Esta versão traz diversas melhorias nas injeções de linguagens:
Adicionamos o suporte a injeções de linguagens usando os atributos [StringSyntax]
(do .NET 7) e [LanguageInjection]
(das JetBrains.Annotations), além do suporte ao comentário de instruções // lang=<language_name>
em Injeções de linguagens.
Injeções de linguagens agora são possíveis em strings interpoladas e concatenações de strings em qualquer linguagem. Antes, isso só estava disponível para SQL. Observe que os erros de sintaxe são suprimidos ao se usar a interpolação de strings ou a concatenação com expressões arbitrárias. Injeções de linguagens dentro de strings brutas do C# 11 também têm suporte.
Agora é exibida uma guia de indentação em strings brutas, separando a indentação do valor propriamente dito.
Há um novo ícone de marcação na medianiz, para notificar os usuários sobre importações implícitas de namespaces em arquivos do C# e do Razor.
Pressionando Alt+Enter na linha correspondente, você pode observar a lista completa de importações implícitas e dados sobre o arquivo de fonte no qual estão localizadas as diretivas global using
correspondentes. Se você selecionar um determinado namespace importado, o Rider pode navegar até o local onde ele foi declarado, incluindo navegar até tags <Using Include="Some.NameSpace" />
no arquivo de projeto .csproj
.
O Rider também apresenta importações globais de _Imports.razor
e permite a navegação até as definições de importação correspondentes.
Em um esforço para ajudar você a simplificar e acelerar o seu processo de desenvolvimento, estamos introduzindo a classificação de elementos assistida por aprendizado de máquina nas opções de complementação de código em C#.
Para melhorar a sua experiência ao usar esse recurso, há duas opções que você pode habilitar em Settings/Preferences | Editor | General | Code Completion | Machine Learning-assisted Completion
:
Com a adição dos tipos numéricos Int128
e UInt128
no .NET 7, atualizamos nossas sugestões de especificadores de formato de complementação de código.
Também adicionamos o suporte que faltava para os tipos de data e hora DateOnly
e TimeOnly
do .NET 6, além do tipo numérico de ponto flutuante com meia precisão Half
, introduzido no .NET 5.
Às vezes, depois de uma refatoração, suas expressões de correspondência de padrões podem se tornar padrões recursivos triviais. Quando isso ocorre, pode valer a pena simplesmente não usar mais a sintaxe de padrões recursivos. Então, agora o Rider oferece a ação de reescrever os padrões como expressões mais simples, preservando a semântica original de correspondência de padrões.
Às vezes, quando você digita depois de uma invocação, você não vê quase nenhuma sugestão significativa. Isso pode acontecer se a invocação não tiver produzido nenhum valor devido a um método que retorna void
ter sido invocado. Geralmente, só se percebe isso depois de algumas ações no IDE (voltando e navegando até a declaração do método ou passando o mouse sobre a invocação). Nesta versão, introduzimos o item de dica void
sobre esse tipo de invocação que retorna void
, para dar a você um feedback imediato a respeito do tipo que resulta dessa invocação. Se você aceitar esse item void
, será adicionado um ponto e vírgula depois da invocação, se ele estiver faltando.
O Rider 2022.3 introduz o Hot Reload para aplicativos de servidor do Blazor. Quando você modificar o código-fonte no seu aplicativo de servidor do Blazor enquanto esse aplicativo estiver em execução, o Rider perguntará se você deseja aplicar essa alteração ao aplicativo em execução sem reiniciá-lo. 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.
Respondendo a uma solicitação popular na nossa comunidade, adicionamos uma nova configuração de execução IIS Application
, para executar e depurar aplicativos ASP.NET clássicos em um servidor IIS. Também estamos introduzindo o suporte ao nome de comando IIS
, do arquivo launchSettings.json
, em aplicativos ASP.NET Core.
Continuamos a melhorar nosso suporte a Endpoints e ao Endpoints Viewer. Agora o visualizador também reconhece corretamente e coleta endpoints para grupos de rotas de API mínima do ASP.NET Core 7. Isso significa que você pode pesquisar os endpoints declarados com a API MapGroup()
, navegar por eles e usar neles a complementação de código inteligente, além dos recursos que já estavam disponíveis.
Foi adicionada a ação .NET User Secrets, para projetos em ASP.NET.
O Rider agora gera automaticamente uma configuração de execução npm
para projetos Web em JavaScript e TypeScript (.esproj
) referenciados pela solução (.sln
).
As dicas embutidas do Code Vision agora também funcionam para JavaScript e TypeScript. Essas dicas facilitarão o rastreamento dos usos de várias classes, métodos, aliases de tipo e interfaces no seu código.
Agora o IDE compreende a "regra at" @supports
, que associa um bloco de instruções a uma condição @supports
. This build also includes support for viewport units, range media queries, container queries, @layer (Cascade layers), and color modification functions.
Adicionamos suporte para a restrição de tipos em templates Angular, o que fornecerá informações de tipo mais precisas e melhores sugestões de complementação de código.
Além disso, o Rider agora exclui a pasta de cache .angular
das buscas globais, para ajudar a dar melhores resultados de busca.
O suporte ao Unity no Rider está ganhando outra grande atualização, com alguns novos recursos, melhorias aos já existentes e também algumas correções.
Adicionamos o suporte ao novo pacote Input System do Unity. O Rider reconhece quando se usam métodos como manipuladores de eventos de entrada e não os mostra mais como não utilizados. Find Usages também funciona com esses métodos, mostrando quando eles são usados no código ou no arquivo .inputactions
.
É ótimo poder carregar recursos de jogo em tempo de execução e o Rider agora pode ajudar a garantir que você esteja usando o caminho correto nos métodos Resources.Load
. O Rider mostra a complementação de código enquanto você digita e realça qualquer recurso desconhecido com um alerta.
O Rider já vem oferecendo a complementação e a verificação de nomes de tags há várias versões, e a versão 2022.3 adiciona um novo suporte ao grupo de métodos GameObject.FindWithTag
. Ela também oferece complementação de código enquanto você digita e avisa se você tentar usar uma tag que não existe no projeto.
Em projetos do Unity, é muito importante manter os meta-arquivos sincronizados com os arquivos e pastas do seu projeto. O Rider 2022.3 dará um alerta se você tentar fazer o commit de um meta-arquivo de uma pasta vazia no controle de fontes. Ainda mais útil que isso, se o editor do Unity estiver aberto, o Rider avisará você se houver alguma cena ou recurso não salvo, ajudando você a ter certeza de que não deixou de fazer alterações ao fazer o commit.
É claro que também há muitas outras melhorias e correções menores. Reduzimos o tempo que demora para carregar projetos extremamente grandes, adicionamos uma notificação que aparece se você tentar editar um arquivo de pacote somente para leitura e melhoramos o Find Usages para que possa ser usado para métodos em prefabs aninhados e arrays de manipuladores de eventos.
No suporte a DOTS, o Rider agora não marca mais classes que implementam IBaker
ou IAspect
como não utilizadas.
Você pode desabilitar as inspeções de nomeação em campos serializados e fazer com que estes sejam tratados como campos normais, e agora os links para a documentação on-line apontam para os lugares certos.
Gostaríamos de agradecer à Unity por fornecer uma correção para ajudar a depurar jogadores no Nintendo Switch.
O Rider já oferece a opção de adicionar CoreRedirects ao renomear classes ou propriedades do Unreal através da refatoração Rename. Agora isso também funciona para:
UFUNCTION()
USTRUCT()
UENUM
Quando você executa a refatoração Rename, agora o Rider sugere adicionar CoreRedirects também nesses casos.
Se você concordar, o arquivo .ini
correspondente será atualizado automaticamente.
Ficou muito mais difícil criar erros no seu jogo acidentalmente ao renomear as coisas!
O Rider 2022.3 introduz uma nova métrica do Code Vision, específica para Blueprints. Agora você pode verificar rapidamente quantos Blueprints usam a função BlueprintCallable
e obter uma lista de todos os usos a partir do menu de contexto do Code Vision.
Agora a ferramenta Generate GUID dá suporte ao formato GUID do Unreal Engine. Sempre que você precisar gerar um GUID rapidamente, basta selecionar Tools | Generate GUID...
no menu e o formato hexadecimal preferido será pré-selecionado.
O recurso de importação automática na complementação pode lhe poupar muito tempo. Mas se ele adicionar uma diretiva #include
incorreta, pode ser complicado detectar o problema. Trabalhamos duro para aperfeiçoar esse recurso e assegurar que ele não sugira entidades indesejadas dos cabeçalhos do sistema na importação automática. Como padrão, cabeçalhos do sistema não são sugeridos, mas se você quiser que eles o sejam, você pode habilitá-los em Settings/Preferences | Languages & Frameworks | C++ | Unreal Engine
.
Melhoramos a apresentação dos logs UnrealBuildTool. Para garantir que você não deixe de ver nenhum alerta ou erro relacionado às configurações do projeto, o painel de logs agora inclui carimbos de data e hora e preserva os logs das execuções anteriores da UnrealBuildTool.
.uproject
Em projetos baseados no Unreal Engine, o Rider funciona tanto com projetos .sln
quanto com .uproject
. Continuamos a melhorar o suporte ao modelo .uproject
nativo, para torná-lo mais preciso e confortável de se trabalhar:
.project
, mais especificamente em AdditionalRootDirectories
e AdditionalPluginDirectories
. .Build.cs
. .uplugin
e .uproject
agora têm suporte quando se usa o modelo de projeto .uproject
. .uproject
, as configurações de execução são geradas automaticamente para programas C++. Implementamos uma ação Attach to Unreal Editor para projetos do Unreal Engine. Essa ação permite que você anexe um depurador a um processo do Unreal Engine rapidamente, sem precisar localizar o processo correto manualmente. Atualmente, você só pode anexar um depurador ao mesmo processo ao qual o UnrealLink está conectado, o que significa que o projeto em execução no Unreal Editor precisa corresponder àquele com o qual você está trabalhando no Rider. Estamos trabalhando para melhorar esse workflow em versões futuras.
Agora o Rider 2022.3 pode ser executado no Windows e no Linux para ARM64. Todos os workflows básicos de desenvolvimento têm suporte, incluindo a execução e a depuração de aplicativos .NET e a execução de testes de unidade. Porém, embora continuemos a trabalhar e a fazer testes para garantir que o Rider funcione sem problemas em processadores ARM64, queremos colocar você a par das seguintes limitações:
Além do Windows, agora o dotMemory também está disponível para o JetBrains Rider no Linux e no macOS. Dois novos modos de profiling estão disponíveis no widget Run e na opção Run | Switch profiler configuration
do menu – Memory (sampled allocations) e Memory (full allocations). Você pode saber mais sobre as diferenças entre esses modos na Ajuda do dotMemory.
Você pode anexar o profiler a um processo em execução a partir do menu Run e ver o Timeline Graph se desenrolando em tempo real. Selecione um intervalo para abrir a visualização Memory Allocations, que é a mesma do dotMemory Standalone. Isso permite que você analise os objetos alocados e a árvore de chamadas de alocação para um intervalo de tempo específico.
Infelizmente, ainda não é possível obter snapshots de memória nesta versão.
A Dynamic Program Analysis (DPA) tem novas inspeções que permitem encontrar vários problemas relacionados ao uso de bancos de dados. Especificamente:
As novas inspeções estão disponíveis para todos os aplicativos que usarem o Entity Framework Core e um provedor .NET de dados para o SQL Server.
Adicionamos a ação Show Covering Tests aos menus de contexto do dotCover, tanto no editor de código quanto na janela Unit Test Coverage. Esta ação mostra um pop-up com todos os testes de cobertura juntos no mesmo lugar. O pop-up também permite criar uma nova sessão de cobertura.
Agora o dotCover copia apenas as assemblies e os arquivos de símbolos necessários para a testagem contínua no JetBrains Rider. Isso melhora o desempenho total do dotCover, especialmente em projetos grandes, porque o dotCover não precisa mais copiar toda a pasta de trabalho. Se necessário, você pode ajustar o filtro de arquivo shadow-copy nas configurações do dotCover.
Antes, para analisar a cobertura de testes do Unity, você tinha que reiniciar o Unity com o suporte à cobertura habilitado. A partir desta versão, não é mais necessário reiniciar o Unity e a cobertura de testes já tem suporte como padrão.
O Gerenciamento Central de Pacotes (também conhecido como o arquivo Directory.Packages.props
) é um recurso em evolução do conjunto de tecnologias do .NET. À medida que esse recurso for sendo aperfeiçoado, ele deve tornar as soluções de gerenciamento mais fáceis no futuro. Com a adição do CPM ao Rider, os desenvolvedores devem ter mais controle sobre suas dependências.
Você pode saber mais sobre o Gerenciamento Central de Pacotes, incluindo dicas e ressalvas, nesta postagem do nosso blog.
Sempre que você usar pacotes do NuGet de código aberto nas suas soluções, há o risco de expor o seu projeto a vulnerabilidades de segurança. Para diminuir esse risco, estamos introduzindo no Rider a detecção de dependências vulneráveis. O IDE alertará você sobre dependências vulneráveis associadas ao uso de pacotes do NuGet, através de pop-ups de notificação, que poderão ser investigados mais a fundo na seção Security da visualização Problems. Também é possível encontrar informações sobre as dependências vulneráveis associadas aos pacotes incluídos na solução na janela NuGet Package Management, selecionando um pacote específico.
Também melhoramos a experiência de rolagem dentro da lista Packages, na janela de ferramentas do NuGet.
O Rider 2022.3 introduz o suporte ao F# 7, traz diversas correções de pequenos problemas e adiciona algumas melhorias de qualidade de vida.
Agora, ao se digitar <
dentro de um comentário, será adicionado um modelo de documentação. Além disso, a edição de comentários na documentação ficou mais fácil com o realce de sintaxe e a complementação de código.
Uma nova regra de complementação de código simplifica a digitação de expressões record
ao enfatizar campos do tipo inferido record
, ocultando todos os que já tiverem sido usados e corrigindo vários casos em que anteriormente nenhuma sugestão era mostrada.
Adicionamos novas correções rápidas, Update parameter name e Update record field, que atualizam arquivos de assinatura, tornando mais fácil utilizá-los ao se alterar o código. A huge thanks goes to Florian Verdonck for implementing them!
Estes foram só alguns destaques das melhorias no suporte a F#. You can find the full list of F# features included in the 2022.3 release here.
Aqui estão alguns destaques dos novos recursos do Rider 2022.3 para trabalhar com bancos de dados:
Saiba mais: Novidades no DataGrip 2022.3
Agora a janela de ferramentas IL Viewer do Rider é capaz de descompilar código em diferentes níveis de construções da linguagem C#. Dois níveis de C# estão disponíveis: alto nível, com certas construções de sintaxe simplificadas, usando os últimos recursos da linguagem, e baixo nível, para casos em que você quiser saber como foi "removido o açúcar" dessas construções de sintaxe.
Realces de código e sublinhados ondulados foram reformulados no Rider 2022.3. Devido a uma diferença de lógica interna, o Rider costumava entrar em conflito com os analisadores de estilo de código do Microsoft Roslyn, causando realces sobrepostos, o mesmo realce mostrado em lugares diferentes ou a duplicação de sublinhados ondulados. Agora as diferenças de lógica por trás da maioria desses casos foram resolvidas. Nos raros casos excepcionais que restaram, há mensagens de erro com sugestões claras de como resolver o conflito.
Além disso, o Rider agora mostra Roslyn Analyzer ID e URL Reference em uma dica de ferramenta Quick Documentation para inspeções, produzida pela Roslyn Analyzers.
Implementamos a opção de executar um binário clang-format diretamente, em vez de usar o motor de formatação do Rider, garantindo a total compatibilidade com o formatador-padrão do setor, além de melhor desempenho e uma gama mais ampla de opções de formatação. Você pode alternar entre as opções interna e externa de clang-format indo até Settings | Editor | Code Style | C++
e selecionando a opção Clang-format.
Melhoramos drasticamente o desempenho do depurador desabilitando a opção Allow property evaluations and other implicit function calls. Agora o depurador pode avaliar muitas expressões mais no modo sem efeitos colaterais em projetos de .NET, .NET Framework e .NET Core.
Tornamos a árvore do explorador de testes de unidades "preguiçosa", para ela ficar mais rápida e usar menos memória. Antes, todos os nós eram criados automaticamente, juntamente com a árvore de testes de unidades, fazendo-a demorar para ser explorada e ocupando muita memória. Agora, apenas serão criados nós que pertençam às partes expandidas da árvore, melhorando perceptivelmente o desempenho.
32 bits
do MSBuild e alterna para a versão de 64 bits
do Visual Studio. A Solution Wide Analysis e o comando Find usages foram refatorados. Testes internos mostram que o seu desempenho está 20-40% mais rápido que antes.