{"id":304867,"date":"2022-12-07T18:24:43","date_gmt":"2022-12-07T17:24:43","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=dotnet&#038;p=304867"},"modified":"2022-12-07T19:43:59","modified_gmt":"2022-12-07T18:43:59","slug":"resharper-2022-3","status":"publish","type":"dotnet","link":"https:\/\/blog.jetbrains.com\/dotnet\/2022\/12\/07\/resharper-2022-3\/","title":{"rendered":"ReSharper 2022.3 Released With More C# 11 Features, NuGet Vulnerabilities Detection, and Support for Visual Studio ARM64."},"content":{"rendered":"\n<p>Hello everyone,<\/p>\n\n\n\n<p><a href=\"https:\/\/www.jetbrains.com\/resharper\/download\/#section=offline-installer\" target=\"_blank\" rel=\"noopener\">ReSharper 2022.3 and other JetBrains .NET tools<\/a> have just been released. In this article we\u2019re going to go over the highlights of this major update for ReSharper as well as touch on the features coming to ReSharper C++. To learn more about our other .NET tools, including dotCover, dotMemory, dotPeek, and dotTrace, please check out <a href=\"https:\/\/blog.jetbrains.com\/dotnet\/2022\/12\/07\/dotcover-dotmemory-dotpeek-dottrace-2022-3\/\">this separate blog post<\/a>.<\/p>\n\n\n\n<p>Now let\u2019s get started!<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"2560\" height=\"1200\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/Release_Preview_image_1280x600_ReSharper-2x.png\" alt=\"\" class=\"wp-image-304896\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">C# support<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">C#11 features<\/h3>\n\n\n\n<p>With our latest release we\u2019re are finalizing basic support for the latest C# 11 features, starting with <strong>UTF-8 literals<\/strong>. The code analysis now suggests using a <code>u8<\/code><em> <\/em>suffix for a literal instead of the <code>System.Text.Encoding.UTF8.GetBytes()<\/code><em> <\/em>method or a byte array with proper <code>UTF8 <\/code>symbols. There is also a set of compiler warnings and errors for <code>UTF-8<\/code> literals.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/cs-utf8.png\" alt=\"UTF-8 literals in ReSharper\" width=\"900\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/Resharper_cs-utf8.gif\">\n\n\n\n<p>ReSharper\u2019s basic support for <strong>file-local types<\/strong> includes an understanding of the new syntax, a <code>file<\/code> accessibility modifier for types, and compiler warnings and errors with corresponding quick-fixes.<\/p>\n\n\n    <div class=\"slider slider-full\">\n                                        <div class=\"slider__slide\">\n                    <a href=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/cs-file-scope-1-1.png\">\n                        <img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/cs-file-scope-1-1.png\" alt=\"\">\n                    <\/a>\n                <\/div>\n                                                    <div class=\"slider__slide\">\n                    <a href=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/cs-file-scope-2-1.png\">\n                        <img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/cs-file-scope-2-1.png\" alt=\"\">\n                    <\/a>\n                <\/div>\n                        <\/div>\n\n\n\n\n\n\n<p>ReSharper 2022.3 will now let you use <code>abstract <\/code><strong>and <\/strong><code>virtual<\/code><strong> modifiers for <\/strong><code>static<\/code><strong> members <\/strong>in interfaces and use such members in generic code with type parameters constrained by this interface.<\/p>\n\n\n    <div class=\"slider slider-full\">\n                                        <div class=\"slider__slide\">\n                    <a href=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/cs-static-abstract-0.png\">\n                        <img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/cs-static-abstract-0.png\" alt=\"\">\n                    <\/a>\n                <\/div>\n                                                    <div class=\"slider__slide\">\n                    <a href=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/cs-static-abstract-1.png\">\n                        <img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/cs-static-abstract-1.png\" alt=\"\">\n                    <\/a>\n                <\/div>\n                                                    <div class=\"slider__slide\">\n                    <a href=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/cs-static-abstract-2.png\">\n                        <img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/cs-static-abstract-2.png\" alt=\"\">\n                    <\/a>\n                <\/div>\n                                                    <div class=\"slider__slide\">\n                    <a href=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/cs-static-abstract-3.png\">\n                        <img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/cs-static-abstract-3.png\" alt=\"\">\n                    <\/a>\n                <\/div>\n                        <\/div>\n\n\n\n\n\n\n<p>ReSharper can now <strong>convert regular and verbatim strings into their raw counterparts<\/strong>. This also means that numerous existing features for strings are now available for&nbsp;<code>raw strings<\/code>.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/cs-to-raw-string.png\" alt=\"Raw strings\" width=\"900\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/cs-to-raw-string.gif\">\n\n\n\n<p>Other ReSharper adoptions from C#11 include the option to declare <code>ref<\/code> fields inside <code>ref<\/code> structs and the recognition of a new<em> <\/em><code>scoped<\/code> keyword.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Language injections<\/h3>\n\n\n\n<p>The ReSharper 2022.3 release handles language injections better. Language injections now work inside C# 11 <code>raw string literals<\/code>. ReSharper also supports the <code>[StringSyntax]<\/code> <a href=\"https:\/\/learn.microsoft.com\/en-us\/dotnet\/api\/system.diagnostics.codeanalysis.stringsyntaxattribute?view=net-7.0\" target=\"_blank\" rel=\"noopener\">attribute<\/a> from .NET 7, along with its different syntaxes for language injection and code completion.<\/p>\n\n\n    <div class=\"slider slider-full\">\n                                                                <div class=\"slider__slide\">\n                    <a href=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/Resharper_Language-Injections_01.png\">\n                        <img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/Resharper_Language-Injections_01.png\" alt=\"\">\n                    <\/a>\n                <\/div>\n                                                    <div class=\"slider__slide\">\n                    <a href=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/Resharper_Language-Injections_02.png\">\n                        <img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/Resharper_Language-Injections_02.png\" alt=\"\">\n                    <\/a>\n                <\/div>\n                        <\/div>\n\n\n\n\n\n\n<h3 class=\"wp-block-heading\"><em>Global imports<\/em> gutter mark<\/h3>\n\n\n\n<p>A new gutter mark icon was introduced to notify developers about implicit namespace imports in C# and Razor files. ReSharper also presents global imports from <code>_Imports.razor<\/code> and allows navigation to corresponding import definitions.<\/p>\n\n\n\n<img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/cs-global-usings-1.png\" alt=\"Global imports gutter mark\" width=\"900\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/cs-global-usings-1.gif\">\n\n\n\n<p><a href=\"https:\/\/www.jetbrains.com\/\/resharper\/whatsnew\/#c-11\/?utm_source=blog&amp;utm_medium=referral&amp;utm_campaign=resharper&amp;utm_content=resharper_2022_3_release\/\" target=\"_blank\" rel=\"noopener\">Learn more<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Vulnerable dependencies detection<\/h2>\n\n\n\n<p>When you use open-source NuGet packages, you risk exposing your project to security vulnerabilities. To mitigate this risk, ReSharper has introduced detection of vulnerable dependencies. Starting with this release, any affected dependencies will be highlighted in <code>.csproj<\/code> and <code>.vbproj<\/code> files.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1200\" height=\"600\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/ReSharper_NuGet-Vulnerable-Dependencies_remake.png\" alt=\"\" class=\"wp-image-305161\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Support for Visual Studio on ARM64<\/h2>\n\n\n\n<p>ReSharper can now be integrated into Microsoft\u2019s Visual Studio on ARM-powered devices. We provide initial support for all basic development workflows except spell-checking with ReSpeller. In addition, dotPeek, dotMemory, dotTrace, and dotCover, as well as ReSharper command-line tools, will now also support Windows ARM64.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Database inspections from DPA<\/h2>\n\n\n\n<p>Dynamic Program Analysis (DPA) has new inspections that let you find various issues related to database usage, like long command execution times, too many database connections, too many simultaneously executed database commands, or commands returning too many records.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1200\" height=\"523\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/dpa.png\" alt=\"\" class=\"wp-image-305276\"\/><\/figure>\n\n\n\n<p>The new inspections are available for all applications that use Entity Framework Core and a .NET data provider for SQL Server.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">C++ support<\/h2>\n\n\n\n<p>ReSharper C++ adds experimental support for C++20 modules. We&#8217;ve updated the language engine and many of the ReSharper C++ features to work with the new compilation model, supporting both <code>named modules<\/code> and <code>header units<\/code>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1200\" height=\"390\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/rsrp_modules-1.png\" alt=\"\" class=\"wp-image-305287\"\/><\/figure>\n\n\n\n<p>Among other improvements, ReSharper C++ 2022.3 provides seamless integration with clang-format as an alternative code formatter and brings new Blueprint-specific inlay hints for Unreal Engine projects. For more details, please see <a href=\"https:\/\/blog.jetbrains.com\/rscpp\/2022\/12\/07\/resharper-cpp-2022-3\/\">this dedicated blog post<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Other notable updates<\/h2>\n\n\n\n<ul><li><strong>The embedded decompiler <\/strong>in ReSharper 2022.3 comes with improved support for C#11 features.<\/li><li>The <strong><em>IL Viewer<\/em><\/strong> tool window is now able to decompile code into high-level and low-level C#.<\/li><li>ReSharper now allows you to import and export type and project dependency diagrams in the <strong>GraphML format<\/strong>.<\/li><\/ul>\n\n\n\n<p>For more information about all these and tons of other features, please visit the <a href=\"https:\/\/www.jetbrains.com\/resharper\/whatsnew\/\" target=\"_blank\" rel=\"noopener\">What\u2019s New in ReSharper 2022.3 page<\/a>.<\/p>\n\n\n\n<p>You can download the release build from <a href=\"https:\/\/www.jetbrains.com\/resharper\/download\" target=\"_blank\" rel=\"noopener\">the ReSharper 2022.3 page<\/a> or install it using the <a href=\"https:\/\/www.jetbrains.com\/toolbox-app\/\" target=\"_blank\" rel=\"noopener\">JetBrains Toolbox App<\/a>. We appreciate any feedback you have about the new features!<\/p>\n","protected":false},"author":1337,"featured_media":304883,"comment_status":"closed","ping_status":"closed","template":"","categories":[4992,907,3990],"tags":[3964,7073,301,477,46],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/dotnet\/304867"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/dotnet"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/types\/dotnet"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/users\/1337"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/comments?post=304867"}],"version-history":[{"count":9,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/dotnet\/304867\/revisions"}],"predecessor-version":[{"id":306138,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/dotnet\/304867\/revisions\/306138"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/media\/304883"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/media?parent=304867"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/categories?post=304867"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/tags?post=304867"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/cross-post-tag?post=304867"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}