{"id":588974,"date":"2025-08-14T11:40:06","date_gmt":"2025-08-14T10:40:06","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=dotnet&#038;p=588974"},"modified":"2025-08-14T11:40:17","modified_gmt":"2025-08-14T10:40:17","slug":"resharper-and-the-net-tools-2025-2-are-out","status":"publish","type":"dotnet","link":"https:\/\/blog.jetbrains.com\/zh-hans\/dotnet\/2025\/08\/14\/resharper-and-the-net-tools-2025-2-are-out","title":{"rendered":"ReSharper and the .NET Tools 2025.2 Are Out!"},"content":{"rendered":"\n<p>ReSharper and the .NET tools 2025.2 are available for download. This release introduces the public preview of ReSharper\u2019s<em> Out-of-Process<\/em> mode, adds support for the latest C# 14 and C++26 features, and brings a range of improvements for performance, refactorings, and inspections.<\/p>\n\n\n\n<p>If you\u2019d like to try out what\u2019s coming in the next stable release, you can download the RC build here:<\/p>\n\n\n    <div class=\"buttons\">\n        <div class=\"buttons__row\">\n                                                <a href=\"https:\/\/www.jetbrains.com\/resharper\/download\/\" class=\"btn\" target=\"\" rel=\"noopener\">Download ReSharper 2025.2<\/a>\n                                                    <\/div>\n    <\/div>\n\n\n\n\n\n\n\n<h2 class=\"wp-block-heading\">Out-of-process mode <sup><code>Public Preview<\/code><\/sup><\/h2>\n\n\n\n<p>The long-awaited <strong><em>Out-of-Process<\/em><\/strong><strong> (<\/strong><strong><em>OOP<\/em><\/strong><strong>) mode<\/strong> is here. ReSharper can now run in a separate process from Visual Studio, improving stability and paving the way for more performance gains in future releases.<\/p>\n\n\n\n<p>Switching to OOP mode is simple:<\/p>\n\n\n\n<ol>\n<li>Go to ReSharper\u2019s<strong> <\/strong><em>Options | Environment | Products &amp; Features<\/em>.<\/li>\n\n\n\n<li>Enable the <strong><em>Run ReSharper in separate process<\/em><\/strong> option.<\/li>\n\n\n\n<li>Click the <em>Save and restart<\/em> button to apply the changes and reinitialize ReSharper without having to restart the IDE.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1200\" height=\"504\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/08\/image-3.png\" alt=\"\" class=\"wp-image-588978\"\/><\/figure>\n\n\n\n<p>You can learn all about the measurable typing latency improvements <em>Out-of-Process<\/em> mode brings<a href=\"https:\/\/blog.jetbrains.com\/dotnet\/2025\/04\/01\/resharper-out-of-process-update\/\"> from this blog post<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Performance improvements you\u2019ll notice<\/h2>\n\n\n\n<p>We\u2019ve tuned ReSharper to work more efficiently across the board:<\/p>\n\n\n\n<ul>\n<li><strong>Instant navigation at startup<\/strong> \u2014 <kbd>Ctrl+T<\/kbd> is available right away.<\/li>\n\n\n\n<li><strong>Faster <\/strong><strong><em>Rename<\/em><\/strong><strong> refactoring<\/strong> with parallelized validation and lower memory use.<\/li>\n\n\n\n<li><strong>Smoother inline refactorings<\/strong> that won\u2019t slow down typing.<\/li>\n\n\n\n<li><strong>Quicker solution loading<\/strong> on SSDs thanks to removal of outdated HDD-era logic.<\/li>\n\n\n\n<li><strong>Optimized Razor\/Blazor processing<\/strong> with less memory overhead and faster <em>Find Usages<\/em>.<br><\/li>\n<\/ul>\n\n\n\n<p>We\u2019ve put together <a href=\"https:\/\/blog.jetbrains.com\/dotnet\/2025\/08\/14\/resharper-performance-improvements-2025\/\">a separate blog post<\/a> for you to explore all of these performance gains in-depth.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">C# support<\/h2>\n\n\n\n<p>ReSharper 2025.2 adds initial support for the latest C# 14 features:<\/p>\n\n\n\n<ul>\n<li>Extension members (initial support).<\/li>\n\n\n\n<li>Partial events and constructors.<\/li>\n\n\n\n<li>Null-conditional assignments (e.g. <code>a?.b = c<\/code>).<\/li>\n\n\n\n<li>User-defined compound assignment operators.<\/li>\n\n\n\n<li>New preprocessor directives: <code>#!<\/code> and <code>#:<\/code>.<\/li>\n<\/ul>\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\/2025\/08\/image-4.png\" alt=\"\" class=\"wp-image-588989\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Logging improvements<\/h2>\n\n\n\n<p>ReSharper now helps you write more efficient and maintainable logging code with <code>ILogger<\/code>:<\/p>\n\n\n\n<ul>\n<li>A new refactoring lets you convert standard logger calls into <code>[LoggerMessage]<\/code>-based methods.<\/li>\n\n\n\n<li>When using <code>ILogger&lt;T&gt;<\/code>, ReSharper suggests the current type automatically.<\/li>\n\n\n\n<li>Completion is now available for parameters in <code>[LoggerMessage]<\/code> attributes.<br>ReSharper detects and highlights missing parameters or duplicates in logging declarations.<\/li>\n<\/ul>\n\n\n                                                <figure class=\"wp-block-image size-full\"><img decoding=\"async\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/08\/vs-light-conversion-from-logger-calls-to-loggermessage-generated-methods.gif\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/08\/vs-light-conversion-from-logger-calls-to-loggermessage-generated-methods.jpg\" alt=\"\" width=\"800\" class=\"wp-image-589000\"\/><\/figure>\n                        \n\n\n<h2 class=\"wp-block-heading\">Coding productivity<\/h2>\n\n\n\n<p>Several new context actions and inspections are available in this release:<\/p>\n\n\n\n<ul>\n<li>Inplace refactorings now appear via inlay hints.<\/li>\n\n\n\n<li>A new context action lets you convert a method to a local function.<\/li>\n\n\n\n<li>A new inspection detects duplicated switch arms and offers a fix to merge them.<\/li>\n\n\n\n<li>Support has been added for <code>[ConstantExpected]<\/code>, with warnings when non-constant values are used.<\/li>\n<\/ul>\n\n\n                                                <figure class=\"wp-block-image size-full\"><img decoding=\"async\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/08\/vs-light-conversion-between-local-and-regular-functions.gif\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/08\/vs-light-conversion-between-local-and-regular-functions.jpg\" alt=\"\" width=\"800\" class=\"wp-image-589025\"\/><\/figure>\n                        \n\n\n<h2 class=\"wp-block-heading\">C++ support<\/h2>\n\n\n\n<p>ReSharper C++ 2025.2 introduces the following updates for modern C++ development:<\/p>\n\n\n\n<ul>\n<li>Initial support for C++26 language features.<\/li>\n\n\n\n<li>Code insight and completion in code containing multiple <code>#if<\/code> directives.<\/li>\n\n\n\n<li>A new syntax style for keeping definitions sorted by declaration order.<\/li>\n\n\n\n<li>Highlighting for global constants, OpenMP variable support, and more.<\/li>\n<\/ul>\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\/2025\/08\/image-5.png\" alt=\"\" class=\"wp-image-589047\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Continuous integration<\/h2>\n\n\n\n<p>As of this release, the TeamCity extension for Visual Studio is being discontinued. This change is intended to reduce long-term maintenance overheads and focus development on the most impactful tooling.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">CQRS validation <sup><code>Experimental<\/code><\/sup><\/h2>\n\n\n\n<p>ReSharper 2025.2 introduces experimental support for validating compliance with the Command Query Responsibility Segregation (CQRS) architectural pattern. CQRS validation helps detect structural inconsistencies between commands and queries using a combination of naming conventions and explicit annotations. ReSharper can now identify and offer quick-fixes for the following issues:<\/p>\n\n\n\n<ul>\n<li>Naming mismatches \u2013 when a symbol\u2019s name doesn\u2019t align with its inferred context.<\/li>\n\n\n\n<li>Context intersections \u2013 when a method in one context calls a method from the opposite context.<\/li>\n\n\n\n<li>Name vs. attribute conflicts \u2013 when the naming pattern and annotations suggest different contexts.<\/li>\n<\/ul>\n\n\n\n<p>CQRS validation is disabled by default and can be enabled in <em>Options<\/em> | <em>Code Inspection<\/em> | <em>CQRS Validation<\/em>. The required annotations are available in <code>JetBrains.Annotations<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What\u2019s new in dotTrace and dotMemory 2025.2<\/h2>\n\n\n\n<p>For the 2025.2 release our efforts surrounding the .NET profiling tools have been focused on improving and elevating their integration into JetBrains Rider. The <em>Monitoring<\/em> tool inside Rider has been reimagined to provide a more seamless and informative experience when analyzing application performance during development.<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/08\/monitoring-rider.mp4\"><\/video><\/figure>\n\n\n\n<p>The <em>Monitoring<\/em> tool window now offers interactive charts for CPU, memory, and Garbage Collection (GC) activity, and automatically highlights performance bottlenecks, UI freezes, and GC pressure issues. On Windows, you can analyze any time interval in dotTrace for detailed call stack and timing data, or capture a memory snapshot for inspection in dotMemory.<\/p>\n\n\n\n<p>These improvements are part of a broader initiative to centralize performance diagnostics and reduce the need for external dashboards or separate profiling sessions during development.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What\u2019s new in dotCover 2025.2<\/h2>\n\n\n\n<p>This release introduces performance optimizations and removes support for some technologies with low usage. The following are no longer supported:<\/p>\n\n\n\n<ul>\n<li>Mono and Unity projects.<\/li>\n\n\n\n<li>IIS Express, WCF, WinRT, external .NET processes, and MAUI.<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p>The command-line runner has been updated and modernized:<\/p>\n\n\n\n<ul>\n<li><code>dotcover cover<\/code> now handles all target types.<\/li>\n\n\n\n<li>XML configuration files have been replaced by text files with CLI arguments.<\/li>\n\n\n\n<li>The .exe runner has been removed from the NuGet package.<\/li>\n\n\n\n<li>dotCover is now available as a .NET tool.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Share your feedback<\/h2>\n\n\n\n<p>You can download the latest release from our website or install it via the JetBrains Toolbox App.<\/p>\n\n\n    <div class=\"buttons\">\n        <div class=\"buttons__row\">\n                                                <a href=\"https:\/\/www.jetbrains.com\/resharper\/download\/\" class=\"btn\" target=\"\" rel=\"noopener\">Download ReSharper 2025.2<\/a>\n                                                    <\/div>\n    <\/div>\n\n\n\n\n\n\n\n<p>We can\u2019t wait to hear your feedback on the newest features and performance improvements! Tell us what you think in the comments below or by reaching out to us <a href=\"https:\/\/x.com\/resharper\" target=\"_blank\">on X<\/a> or <a href=\"https:\/\/bsky.app\/profile\/resharper.bsky.social\" target=\"_blank\" rel=\"noopener\">Bluesky<\/a>.<\/p>\n","protected":false},"author":1337,"featured_media":590140,"comment_status":"closed","ping_status":"closed","template":"","categories":[4992,907],"tags":[211,507,1830,8847,667,477],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/dotnet\/588974"}],"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=588974"}],"version-history":[{"count":10,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/dotnet\/588974\/revisions"}],"predecessor-version":[{"id":592643,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/dotnet\/588974\/revisions\/592643"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/media\/590140"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/media?parent=588974"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/categories?post=588974"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/tags?post=588974"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/cross-post-tag?post=588974"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}